递归算法
来源:互联网 发布:网络交友有哪些弊端 编辑:程序博客网 时间:2024/06/05 21:18
递归的强大之处在于它允许用户用有限的语句描述无限的对象。因此,在计算机科学中,递归可以被用来描述无限步的运算,尽管描述
运算的程序是有限的。 ——尼克劳斯·维尔特
1、递归的定义
递归是在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。
2、构成递归的两个基本要素:
一、描述问题规模逐步缩小的递归算法;
二、描述基本情况的递归终止条件(base case)。
3、优点及缺点
优点:使代码简洁清晰,为设计算法、调试程序带来很大的方便,有些程序的设计必须用到递归
缺点:运行效率低(运行时间长、占用存储空间大)
4、实现原理
下面的程序,是用于计算高斯求和公式:
/* * Gauss summation */public int f(n){ if (n == 1) { return 1; // base case(终止条件) } else { return f(n-1) + n; // induction(归纳) }}
在程序中规定了f(1)的值,以及f(n)和f(n-1)的关系。这正是数学归纳法思想的体现。想要得到f(n),必须计算f(n-1);想要f(n-1),必须计算f(n-2)……直到f(1)。由于我们已经知道了f(1)的值,我们就可以填补前面所有的空缺,最终返回f(n)的值。递归是数学归纳法在计算机中的程序实现。使用递归设计程序的时候,我们设置base case,并假设我们会获得n-1的结果,并实现n的结果。这就好像数学归纳法,我们只关注初始和衔接,而不需要关注具体的每一步。
<span style="color:#ff0000;">5、总结</span>
<span style="font-family: Arial, Helvetica, sans-serif;"> 从上述代码中我们可以总结出,递归使用的一般规律</span>
<span style="font-family: Arial, Helvetica, sans-serif;"> 1、问题可分解与原问题相似或相近的子问题。</span>
<span style="font-family: Arial, Helvetica, sans-serif;"> 2、问题求解的时候有跳出或结束标志。</span>
0 0
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- Eclipse.ini的相关说明
- dell 服务器raid配置
- 变形课
- 视频聊天室如何成功赚钱分享攻略二
- 视频:《博物馆3》猴子闹罗宾哭 大表哥客串
- 递归算法
- if 语句会出现的问题
- VS2008下编译linphone3.5.2
- Object C 继承
- 深入理解 retain,copy,mutableCopy
- 在 Eclipse 下利用 gradle 构建系统
- 判断日期在所在年中的位置
- ElasticSearch模块threadpool
- HTML中设置td的字体颜色