递归算法

来源:互联网 发布:网络交友有哪些弊端 编辑:程序博客网 时间: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大腿内侧抻着了怎么办 大腿抻筋了 很疼怎么办 小腿肚子聚筋了怎么办 6个月婴儿腿弯怎么办 胳膊抻筋拉伤了怎么办 宝宝抻着了怎么办妙招 拎东西胳膊抻了怎么办 小臂一用力筋疼怎么办 摔破胳膊很痛怎么办 胳膊的筋扭伤了怎么办 小孩胳膊抻筋了怎么办 肩膀抻着了怎么办妙招 右边肩膀抻着了怎么办 胳膊因劳累很痛怎么办 宝宝胳膊摔了疼怎么办 宝宝胳膊抻筋了怎么办 孕妇胳膊筋伤了怎么办 刚进公司就怀孕怎么办 撞到胳膊麻筋了怎么办 腰抻了怎么办多久能好 腰突然抻了一下怎么办 干活抻筋了 很疼怎么办 胳膊抻筋一动就疼怎么办 肩膀受风了很疼怎么办 开空调受风了怎么办 胳膊受风了疼怎么办 孩子胳膊抻筋了怎么办 胳膊被风吹了疼怎么办 月子里胳膊受风怎么办 受风了胳膊酸痛怎么办 胳膊受风了在家怎么办 手臂烧伤手肿了怎么办 胳膊里的筋疼怎么办 3岁胳膊背筋了怎么办 左胳膊筋一直疼怎么办 手臂突然筋扭了怎么办 胳膊扭了肿了怎么办 胖人走路磨大腿怎么办 脖子上长了个淋巴结怎么办 面部危险三角区长痘痘怎么办 儿童脖子上有淋巴结节怎么办