版权声明:
尊重知识产权,严厉打击非法采集。
斐波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数、费氏数列、黄金分割数列。
在数学上,斐波那契数列是以递归的方法来定义:
用文字来说,就是斐波那契数列由0和1开始,之后的斐波那契系数就是由之前的两数相加而得出。
维基百科上有一张经典的图,以斐波那契数为边的正方形拼成的近似的黄金矩形(1:1.618)
同时斐波纳契数是杨辉三角形的每一条红色对角线上数字的和。
那定义搞清楚了,本文的目的是用javascript语言,实现给定一个小于N的范围,然后输斐波那契数列。
注意,本文不像大多数文章求斐波那契数列中第N个数的值,而是输出斐波那契数列。
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
使用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
递归法
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]
扩展阅读
$ 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 : 2023-07-31 09:16:20 +0000
[INFO] -0------------------------------
下一篇 假装在学Java