C#算法—递归详解

来源:互联网 发布:祛痘消炎的药膏知乎 编辑:程序博客网 时间:2024/06/10 03:17

         递归是很方便的一种算法,下面对递归算法进行详细解答。

    1.函数递归:递归的本质就是自己调用自己。

    2.递归的定义:递归本身就是一个循环。

    3.递归的思想:越来越接近已知值。

    4.递归的总结:1)通过自己调用自己吧复杂的逻辑简单化,可以求得最终结果;

                  2)递归要有开始条件,也要有一个结束条件;

                  3)有一种递归的逻辑运算。

    看到递归的定义可能感觉定义中并没有完全的解释清楚什么是递归?递归怎么用?接下来进入实战,利用简单的例子来深入了解递归的奥妙。

    实战内容是斐波那契数列,斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584........;斐波那契数列的特点就是从第三项开始,每一项都等于前两项之和。我们用递归实现斐波那契数列,代码如下:

      递归的思想就是这样,反向理解就可以理解为为了求第n项的数字,我们要先求第n-1项和第n-2项,然后第要求第n-1项又要求第n-2项和第n-3项,这样依次类推我们一定会求到第一项和第二项,而第一项和第二项的答案我们是知道的,所以这时就可以回推回去,最终求出答案。

       举例说明:例如我们要求斐波那契数列的第5项,第5项等于第4项加第3项,而第4项和第3项我们也是未知的,所以我们的问题转化为求第4项加第3项,再继续求解,我们的问题中第3项等于第2项加第1项,第1、2项我们知道结果,从而把答案返回到第3项 ,求出第3项为2,同理我们可求第4项为3,我们再返回上一层,第5项等于第4项加第3项,从而得出第5项的结果为5.

       斐波那契数列的根本思想就是反复调用自身,使得我们越来越接近已知答案,当我们获取到已知答案的那一刻,函数瞬间回推,推出我们想要求出的结果。

       我们可以在举一个例子,我们求10!,阶乘同样可以利用递归实现,代码如下:

       

       记住递归的思想,递归就很容易理解了。

原创粉丝点击