您的位置:首页 > 理论基础 > 数据结构算法

数据结构:递归

2015-12-30 19:12 489 查看
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. 递归的缺点

空间复杂度很大,简单来说就是会占用大量运行内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: