zoukankan      html  css  js  c++  java
  • 什么是递归?递归大讲义

    什么是递归

      迭代的是人,递归的是神

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

    }

  • 相关阅读:
    Go语言从入门到放弃(三) 布尔/数字/格式化输出
    11. GLOBAL_VARIABLES 与 SESSION_VARIABLES
    10. GLOBAL_STATUS 与 SESSION_STATUS
    9. FILES
    8. EVENTS
    7. ENGINES
    6. COLUMN_PRIVILEGES
    5. COLUMNS
    4. COLLATION_CHARACTER_SET_APPLICABILITY
    3. COLLATIONS
  • 原文地址:https://www.cnblogs.com/liuruipeng/p/8026642.html
Copyright © 2011-2022 走看看