斐波那契数列
1,1,2,3,5,8…..
fib(n) = fib(n-1) + fib(n-2);
实现
// 普通递归
function originfib (n) {
console.log(n);
if (n === 1 || n === 2) {
return 1;
}
return originfib(n - 1) + originfib(n - 2);
}
// 改进递归 v1 v2存值,
function fibonacci (n) {
function fib (n, v1, v2) {
console.log(n, v1, v2);
if (n === 1) {
return v1;
} else if (n === 2) {
return v2;
} else {
return fib(n - 1, v2, v1 + v2);
}
}
return fib(n, 1, 1);
}
// 循环
function fibFor (n) {
var n1 = 1, n2 = 1, sum = 1;
for (let i = 2; i < n; i++) {
sum = n1 + n2;
n1 = n2;
n2 = sum;
console.log(sum);
}
return sum;
}
// 循环 + 解构赋值
function newFibFor (n) {
var n1 = 1, n2 = 1;
for (let i = 2; i < n; i++) {
[n1, n2] = [n2, n1 + n2];
}
return n2;
}
https://www.cnblogs.com/superlizhao/p/11603158.html
https://blog.csdn.net/weixin_43738731/article/details/84256666