hooyes 灵感纵容非凡

Javascript 输出斐波那契数列

2016-10-09
hooyes

定义

斐波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数、费氏数列、黄金分割数列。

在数学上,斐波那契数列是以递归的方法来定义:

  • F0 = 0
  • F1 = 1
  • Fn = F(n-1) + F(n-2) n≧2

用文字来说,就是斐波那契数列由0和1开始,之后的斐波那契系数就是由之前的两数相加而得出。

维基百科上有一张经典的图,以斐波那契数为边的正方形拼成的近似的黄金矩形(1:1.618)

同时斐波纳契数是杨辉三角形的每一条红色对角线上数字的和。

那定义搞清楚了,本文的目的是用javascript语言,实现给定一个小于N的范围,然后输斐波那契数列。

注意,本文不像大多数文章求斐波那契数列中第N个数的值,而是输出斐波那契数列。

方法1

使用Generator函数

const N = 100  // 定义一个范围
let fArr = [] // 一个临时数组用于存储数列结果

function* fibonacci() {
  let [current, next] = [0, 1];
  while (true) {
    [current, next] = [next, current + next];
    yield next;
  }
}

for (let x of fibonacci()) {
   if(x > N) break;
   fArr.push(x);
}

console.log(fArr.join(','));

// 1,2,3,5,8,13,21,34,55,89

方法2

递归法

const N = 100  // 定义一个范围
let fArr = [] // 一个临时数组用于存储数列结果

function fibonacci(prev,curr,n){
    [prev,curr] = [curr,prev + curr]  
    if (curr < n) {
      fArr.push(curr);
      fibonacci(prev,curr,n)
    }

}
fibonacci(0,1,N);

console.log(fArr.join(','));

// 1,2,3,5,8,13,21,34,55,89

// hooyes提示,上述两个方法都用到解构赋值语法 let [a,b] = [0,1]

总结


 // 转载请注明出处。


Similar Posts

Content
TOP