• 递归 斐波那契


    递归函数就是自己调用自己,必须要有结束条件。

    计算1-N之间的和

    function sum (n) {

      2,结束递归

      if(n ===1) {

        return  1

      }

      1, //把未知问题转已知问题

      return  sum(n-1)+n

    }

    sum(5);原理:层层递进,层层回归。如下

    //sum(5)==》sum(4) + 5

    //sum(4)==》sum(3) + 4

    //sum(3)==》sum(2) + 3

    //sum(2)==》sum(1) + 2

    //sum(1)==》1

    ----------------------------------------------------------------------------------------

    斐波那契(计算次数多,性能不佳)

    已知一对兔子每月可生一对小兔子,出生的小兔子三个月后,每个月可以生一对兔子。假设没有死亡的情况下一年能有多少兔子?

    function fib (n) {

      //第一个月和第二个月兔子的数量都是一对

      if(n ===1 || n ===2) {

        return 1

      }

      return fil(n-1) + fib(n-2)

    }

    fib(12)

    -------------------------------------------------------

    优化版

    //声明一个容器存储计算过的月份

    var cache = {}

    function fib (n) {

      //第一个月和第二个月兔子的数量都是一对

      if(n ===1 || n ===2) {

        return 1

      }

      if(cache[n]) {

        return cache[n]

      }else {

        //1,计算兔子数量

        var ret = fil(n-1) + fib(n-2)

        //2,用容器把变量存起来

        cache[n] = ret

        //3,把计算结果返回出去

        return ret;

      }

      return fil(n-1) + fib(n-2)

    }

    fib(100)

  • 相关阅读:
    中文转数字
    半角全角互转
    sql快速查记录数
    杀进程批处理
    线程基本用法
    sql游标用法示例
    BUGFREE的使用
    SQL常用函数
    ASP.NET 2.0 下的验证码控件
    经典sql语句
  • 原文地址:https://www.cnblogs.com/xiaoxiao95/p/12979953.html
Copyright © 2020-2023  润新知