数据结构:递归
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. 递归的缺点
空间复杂度很大,简单来说就是会占用大量运行内存。
递归方法就是直接或者间接的调用自己,它可以将一些发杂问题简化。
递归在下列方法中经常会用到:
(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. 递归的缺点
空间复杂度很大,简单来说就是会占用大量运行内存。
相关文章推荐
- 数据结构_1:线性表: Vector
- 数据结构和算法概览(一)
- 数据结构课程期末总结二
- 数据结构 JAVA描述(六) 图的创建 (邻接矩阵+邻接表)
- 大话数据结构—二叉排序树
- Linux关键数据结构
- linux内核数据结构之kfifo
- 数据结构(期末小结)——1、数据结构概论
- 数据结构和算法经典100题-第29题
- 3-1-栈的顺序存储结构-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构 JAVA描述(五)哈夫曼树,树与森林
- 数据结构课程设计
- 数据结构和算法经典100题-第28题
- 数据结构课程设计之图书管理系统
- 数据结构实训:学生信息管理
- 数据结构实训-学生成绩管理系统
- 数据结构课程设计——学生成绩管理
- {数据结构课程设计}校园导游的多功能实现
- 数据结构课程设计——校园导航系统开发
- 数据结构 JAVA描述(四) 树与二叉树基础