1. 递归的定义
递归方法就是直接或者间接的调用自己,它可以将一些发杂问题简化。
递归在下列方法中经常会用到:
(1)定义是递归的;
(2)数据结构是递归的;
(3)问题的解法是递归的。
2. 应用递归的原则
因为递归是自己调用自己,如果是不适当的递归,就会陷入死循环,所以递归需要一些自己的原则。
首先,必须要有一定的“基本条件”,它能够采用非递归的方式计算得到,具体来说就是当采用递归处理后的子问题可以直接解决时,就停止分解,这些可以直接求解的问题叫做递归的“基本条件”。共有5个基本原则,如下:
(1)基本条件:递归过程必须存在至少一个不适用递归方法解决的条件,也就是说递归中可以有多个基本条件;
(2)进行方向:任何递归调用都必须向着“基本条件”的方向进行;层层向下递归,退出时的次序正好相反;
(3)正确假设:总是假设递归调用时有效的;
(4)适度原则:为提高效率,避免使用过多递归;
(5)顺序原则:变动递归调用函数的顺序可能导致整个函数执行顺序的变化。
3. 递归实例
有一个Febonacci序列:
1,1,2,3,5,8,13,,21,34........
它的问题是:求这个序列中的第N个数。
由于它的函数原形是:f(N)=f(n-1)+f(n-2)
这用递归很容易就可以写出代码来,一点都不费事:
int Febc(int n) {
if(n<3) return (1);
else
return (Febc(n-1)+Febc(n-2));
}
4. 递归的缺点
空间复杂度很大,简单来说就是会占用大量运行内存。