hooyes

Javascript 输出斐波那契数列

|2016-10-09

请尊重原创,本文原文地址:https://hooyes.net/p/javascript-fabonacci

定义

斐波那契数列(意大利语: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

var a = []; // 临时数组存储数列结果
a[0]=0;
a[1]=1;
for(var i=2;i<12;i++){
    a[i]=a[i-1]+a[i-2];
}
console.log(a.join(','));
// 0,1,1,2,3,5,8,13,21,34,55,89

方法2

使用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

方法3

递归法

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提示,上述两个方法2,3都用到解构赋值语法 let [a,b] = [0,1]

https://hooyes.net/p/javascript-fabonacci
https://hooyes.net/p/javascript-fabonacci

扩展阅读

Go语言输出斐波那契数列

$ welcome to hooyes.net
[INFO] ------------------------------o-
[INFO] Author : HOOYES
[INFO] Site : https://hooyes.net
[INFO] Page : https://hooyes.net/p/javascript-fabonacci
[INFO] Last build : 2020-06-22 02:23:21 +0000
[INFO] -0------------------------------
原文地址:https://hooyes.net/p/javascript-fabonacci
原文地址:https://hooyes.net/p/javascript-fabonacci

下一篇 假装在学Java

Content
...
TOP