zoukankan      html  css  js  c++  java
  • 递归

    递归求斐波那契数列:

        //1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
        function getFib(n){
            if(n==1 || n==2){
                return 1;
            }
            return getFib(n-1)+getFib(n-2);
        }
        console.log(getFib(1))  //1
        console.log(getFib(2))  //1
        console.log(getFib(3))  //2
        console.log(getFib(4))  //3
        console.log(getFib(9))  //34
        console.log(getFib(50)) //卡死

    原因是这样算比较浪费性能。

        let i=0; //计数
        function getFib(n){
            i++;
            if(n==1 || n==2){
                return 1;
            }
            return getFib(n-1)+getFib(n-2);
        }
        console.log(getFib(20))     //6765
        console.log(i)      //13529

    由此可见,求第20位的数字,浏览器计算了13529次。

    改进如下:

        let i=0,
            obj={};
        function getFib(n){
            i++;
            if(obj[n] != undefined){  // 如果obj里已经有这个数,那么直接返回这个数
                return obj[n];
            }else{  // 如果obj里没有这个数,则进行计算
                if(n==1 || n==2){
                    obj[n]=1;
                    return 1;
                }else{
                    obj[n]=getFib(n-1)+getFib(n-2);
                    return obj[n];
                }
            }
        }
        console.log(getFib(60)) // 1548008755920
        console.log(obj)
        console.log(i)  // 117

    递归求阶乘:

        function fn(n){
            if(n==1){
                return 1;
            }else{
                return fn(n-1)*n;
            }
        }
        console.log(fn(1))  //1
        console.log(fn(2))  //1*2
        console.log(fn(3))  //1*2*3
        console.log(fn(4))  //1*2*3*4
        console.log(fn(5))  //1*2*3*4*5
  • 相关阅读:
    intellij idea cpu占用率太大太满 运行速度太慢解决方案
    IntelliJ IDEA详细配置和使用(Java版)
    Bzoj2882 工艺
    SPOJ
    Bzoj2599 [IOI2011]Race
    Codeforces Round #398 (Div. 2) A-E
    Bzoj3653 谈笑风生
    Bzoj3652 大新闻
    URAL1960 Palindromes and Super Abilities
    Bzoj3676 [Apio2014]回文串
  • 原文地址:https://www.cnblogs.com/wuqilang/p/11900995.html
Copyright © 2011-2022 走看看