一般定义: 程序调用自身的编程技巧称为递归(recursion)。
递归做为一种算法设计技巧,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
递归过程总是一个过程还未执行完就执行另一个过程(但是执行另一过程前会保存未执行完时候的变量值),如此反复,一直执行到边界条件,执行完余下的过程后,返回上一次未执行完的过程执行(此时使用的是当时的变量),如此反复,直到回到起始位置。
设计递归程序的基本思路:
1、先弄清楚递归的顺序。在递归的实现中,往往需要假设后续的调用已经完成,在此基础之上,才实现递归的逻辑。
2、考虑递归退出的边界条件。
一个简单递归程序的模板
void recurs(argumentlist) { statements1; if(未达到边界条件) { recurs(argumentlist); } statements2; }
更深入的理解递归程序可以参见http://www.ibm.com/developerworks/cn/linux/l-recurs.html