什么是递归?递归大讲义

什么是递归

  迭代的是人,递归的是神

   简单的定义:“当函数直接或者间接的调用自己时,则发生递归”,说起来来简单,但是理解起来复杂,因为递归并不直观,也不符合我们的思维习惯,相对于递归,我们更加容易理解迭代.因为我们日常生活中的思维是一步接一步的,并且能够理解一件事情做了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);

}

原文地址:https://www.cnblogs.com/liuruipeng/p/8026642.html