递归利用了函数调用自身的能力。函数(也可称为程序)调用自身,本质上就是留尾巴,搁置手中的工作,重新再做一次同样的事情。由于程序实际上没有从正常出口结束,所以它铺开的摊子还在,而要重复同样的事情,就等于另寻地方把摊子再铺开,同时要记住当前的摊子在哪里,假如不断地这样铺开的话,同时也得记住顺序,以便原路返回——这种展开再返回的动作就是所谓的“栈数据结构”机制。
观察自我调用的函数,你只要记住,函数并没有结束,它只是往高处加盖了一层楼,假如这种加盖动作有尽头,那么它就会从原路一直拆楼返回来,否则就是死机(死循环)。函数自身(楼层面积和结构)越大越复杂,这种递归所占用的资源就越多,速度也越慢。
知道这种工作原理,是用不着去上过数据结构课程才了解的,不明白这种工作原理,学完了数据结构也同样不知是怎么回事,连这种东西在应用上有什么避忌都不知道。