zoukankan      html  css  js  c++  java
  • 斐波那切数列

    通过下标求值

    • 生成数组
    function fib(index){
       let arr = [1,1]
       for(let i = 2;i < index + 1;i++){
         arr.push(arr[i - 1] + arr[i - 2])
       }
       return arr[index]
    } 
    
    • 未生成数组
    function fib(index){
        let pre = 1,cur = 1,next;
        if(index < 2){
            return 1
        }
        for(let i = 2;i < index + 1;i++){
            next = pre + cur
            pre = cur;
            cur = next;
        }
        return next
    }
    

     非尾递归

    function fib(index) {
        if (index <= 1){
            return 1
        };
        return fib(index - 1) + fib(index - 2);
    }
    

    尾递归

    function fib(index,pre = 1,cur = 1){
        if(index <= 1){
            return cur
        }
        return fib(index - 1,cur,pre + cur)
    }
    

    通过值求下标

    function fib(val){
        if(val == 1){
            return 0
        }
        let pre = 1,cur = 1,next;
        for(let i = 2;i < val;i++){
            next = pre + cur
            pre = cur;
            cur = next;
            if(val == next){
                return i
            }else if(next > val){
                return -1
            }
        }
    }
    function fib(val){
        if(val == 1){
            return 0
        }
        let pre = 1,cur = 1,next = pre + cur,i = 2;
        while(next <= val){
            if(next == val){
                return i
            }
            pre = cur;
            cur = next;
            next = pre + cur
            i++
        }
        return -1
    }
    以自己现在的努力程度,还没有资格和别人拼天赋
  • 相关阅读:
    负数幅角的选取
    记一次py交易
    区间估计
    平方和
    正态总体 下常用结论
    每日一背
    乘积的期望
    java调用javascript
    Java Agent入门
    JavaPoet入门
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13141046.html
Copyright © 2011-2022 走看看