什么是斐波那契数列,1,1,2,3,5,8,13...这样一个数列就是斐波那契数列,求第n项的值。
前言
今天一个朋友面试遇到了这个问题,就来记录一下,方便查看回忆,有很多种方法,以下记录了三种方式
一、普通递归
function fibonacci(n) {
if (n == 1 || n == 2) {
return 1
};
return fibonacci(n - 2) + fibonacci(n - 1);
}
fibonacci(30)
二、改进递归-把前两位数字做成参数避免重复计算
function fibonacci(n) { function fib(n, v1, v2) { if (n == 1) return v1; if (n == 2) return v2; else return fib(n - 1, v2, v1 + v2) } return fib(n, 1, 1) } fibonacci(30)
三、for循环+解构赋值
var fibonacci = function (n) {
let n1 = 1; n2 = 1;
for (let i = 2; i < n; i++) {
[n1, n2] = [n2, n1 + n2]
}
return n2
}
fibonacci(30)
总结
斐波那契数列,例如,3就等于0+1+1+2。4就等于0+1+1+2+3。所以跟n-1跟n-2