斐波那契数列数列:0 1 1 2 3 5 8 13...,用数学公式表示为:fn(n) = fn(n-1) + fn(n-2), n>1; fn(0) = 0; fn(1) = 1; 简单的来说就是后一项是前两项只和。
1,2,4,8 //等比
0,2,4,6 //等比
/* 递归 */
function fb1(n) {
if (n < 1)
return -1;
if (n == 1 || n == 2)
return 1;
return fb1(n - 1) + fb1(n - 2);
}
console.log(fb1(12));//144
//不建议用递归,性能太差,超过40 就超级慢了50 需要四分多钟
方法2:循环实现
function fabonacci(n) {
var last = 0;
var laster = 1;
var current = last;
for (var i = 1; i <= n; i++) {
last = laster;
laster = current;
current = last + laster;
}
return current;
}
var start = new Date();
var result = fabonacci(50);
var end = new Date();
console.log('方法二', result, end.getTime() - start.getTime());
本文探讨了斐波那契数列的两种实现方式:递归和循环。递归方法虽然简洁但效率低下,对于较大数值会导致性能问题。循环实现则提供了一种更高效的解决方案,通过循环计算避免了重复计算,显著提升了运行速度。
1032

被折叠的 条评论
为什么被折叠?



