• 斐波那契数列


    什么是斐波那契数列:

    斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>2,n∈N*)
    接下来展示如何用JavaScript函数斐波那契数列第N个数的值

    计算的核心,其实是把最近的两个数求和

    递归(普通版)
    function Fibonacci (n) {
      if ( n <= 1 ) {return 1};
      return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
    
    递归(尾调用)
    function Fibonacci2 (n , ac1 = 1 , ac2 = 1) {
      if( n <= 1 ) {return ac2};
      return Fibonacci2 (n - 1, ac2, ac1 + ac2);
    }
    
    循环版
    unction Fibonacci3(n){
        if (n===1 || n===2) {
            return 1;
        }
        let ac1 = 1, ac2 = 1;
        for (let i = 2; i < n; i++){
            [ac1, ac2] = [ac2, ac1 + ac2];
        }
        return ac2;
    }
    
    generator版
    function* fibonacci() {
         let [prev, curr] = [1, 1];
              while (true) {
                [prev, curr] = [curr, prev + curr];
                yield curr;
          }
    }
    function Fibonacci(n){
        if (n===1 || n===2) {
                return 1;
            }
        let ac = 0;
        const fibo = fibonacci();
        for (let i = 2;i < n; i++) {
          ac = fibo.next()
        }
        return ac.value;
    }
    

      

  • 相关阅读:
    编译JDK12
    Hexo Next背景动画Canvas_nest:true设置无效
    素数
    Linux 命令行样式
    四种排序算法实现
    Java中的简单容器
    一个关于2的次方问题
    LeetCode--20.有效的括号
    Java中的注释
    关于Metasploitable的测试
  • 原文地址:https://www.cnblogs.com/bigman-bugman/p/12360189.html
Copyright © 2020-2023  润新知