• 递归 斐波那契


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

    计算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)

  • 相关阅读:
    POJ 1003 解题报告
    POJ 1004 解题报告
    POJ-1002 解题报告
    vi--文本编辑常用快捷键之光标移动
    常用图表工具
    September 05th 2017 Week 36th Tuesday
    September 04th 2017 Week 36th Monday
    September 03rd 2017 Week 36th Sunday
    September 02nd 2017 Week 35th Saturday
    September 01st 2017 Week 35th Friday
  • 原文地址:https://www.cnblogs.com/xiaoxiao95/p/12979953.html
Copyright © 2020-2023  润新知