什么是递归?递归大讲义


什么是递归

  迭代的是人,递归的是神

   简单的定义:“当函数直接或者间接的调用自己时,则发生递归”,说起来来简单,但是理解起来复杂,因为递归并不直观,也不符合我们的思维习惯,相对于递归,我们更加容易理解迭代.因为我们日常生活中的思维是一步接一步的,并且能够理解一件事情做了N遍这个概念。而我们生活中几乎不会有递归思维的出现。

   更为专业的定义:程序自身的编辑技巧称为递归,递归有直接递归和间接递归。

   直接递归:函数在执行过程中调用本身。

   间接递归:函数在执行过程中调用其他函数在经过这些函数调用本身。

   递归有四个特性:1、必须有可最终达到的终止条件,否则程序将陷入无限循环。2、子问题在规模上比原问题小,或更为接近终止条件。3、子问题可通过再次递归调用求解或因满足终止条件而求解。4、子问题的解应组合为整个问题的解。

    

    

提到递归,我们可能会想到的一个实例便是斐波那契数列。斐波那契数列就是如下的数列:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …,总之,就是第N(N > 2)个数等于第(N - 1)个数和(N - 2)个数的和。用递归算法实现如下:

  public static int Fibonacci(int n)

   {

    if (n < 0) return -1;

     if (n == 0) return 0;

     if (n == 1) return 1;

     return Fibonacci(n - 1) + Fibonacci(n - 2);

}

优质内容筛选与推荐>>
1、Visual Studio 2013进行Python开发(二)---python连接sql server数据库
2、今天gates 关门了,盖茨将捐出全部580亿美元财产不给子女留分毫,尽显英雄本色
3、[Locked] Find the Celebrity
4、【2014 Multi-University Training Contest 2 1002】/【HDU 4873】 ZCC Loves Intersection
5、判断iPhone还是iPad设备


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号