斐波拉契
斐波那契数列 1, 1, 2,3,5,8,13,21…..
使用公式f( n ) = f(n-1)+f(n-2),结束条件f(2) =1, f(1) = 1
1
2
3
4
5
6
7
8
9
10
|
//初始实现
function fib(n) {
if( n==1 || n == 2){
return 1;
}
else{
return fib(n-1)+fib(n-2);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// for 循环实现
function fib(n){
var res = [1,1];
if( n==1 || n == 2){
return 1;
}
for(var i=2; i<n; i++){
res.push(res[i-1]+res[i-2]);
}
return res[n-1];
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
var cache = [];
function fib(n){
if(cache[n] !== undefined){
return cache[n];
}
if(n <= 2){
cache[n] = 1;
return 1;
}
cache.push(fib(n - 1) + fib(n - 2));
return cache[n];
}
|