1.求n!时,n!=n*(n-1)!,而(n-1)!=(n-1)*(n-2),依此类推,直到1!=1为止,就是个递归问题.
2.一个循环如:while(a<0){……}.
递归和循环有些相似的地方,递归问题都可以用循环来代替,但是在程序的篇幅上和复杂程序上就有一定增加了递归和循环一样都是需要一个口停止这个“循环”的过程。递归在事先不知道第一个值得时候用,进而一步一步推出要输出的值,而循环式用重复的方法一个个往下执行,一个个得出值,是顺序得出,递归是倒序得出。
一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
注意:
(1) 递归就是在过程或函数里调用自身;
(2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。
递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索) |