深度理解递归技术
递归的使用条件: 存在一个递归调用的终止条件; 每次递归的调用必须越来越靠近这个条件;只有这样递归才会终止,否则是不能使用递归的! 总之,在你使用递归来处理问题之前必须首先考虑使用递归带来的好处是否能补偿 他所带来的代价! 否则,使用迭代算法会比递归算法要高效。 递归的基本原理: 1 每一次函数调用都会有一次返回.当程序流执行到某一级递归的结尾处时,它会转移到前一级递归继续执行. 2 递归函数中,位于递归调用前的语句和各级被调函数具有相同的顺序.如打印语句 #1 位于递归调用语句前,它按照递归调用的顺序被执行了 4 次. 3 每一级的函数调用都有自己的局部变量. 4 递归函数中,位于递归调用语句后的语句的执行顺序和各个被调用函数的顺序相反. 即位于递归函数入口前的语句,右外往里执行;位于递归函数入口后面的语句,由里往外执行。 5 虽然每一级递归有自己的变量,但是函数代码并不会得到复制. 6 递归函数中必须包含可以终止递归调用的语句. 一旦你理解了递归( 理解递归 , 关键是脑中有一幅代码的图片 , 函数执行到递归函数入口时 , 就扩充一段完全一样的代码 , 执行完扩充的代码并 return 后 , 继续执行前一次递归函数中递归函数入口后面的代码 ),阅读递归函数最容易的方法不是纠缠于它的执行过程,而是相信递归函数会顺利完成它的任务