用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
function fibonacci(n) {
if(n==1||n==2){
return 1
}
if(n>=3){
return fibonacci(n-2)+fibonacci(n-1)
} function fibonacci(n) {
let a=1,b=1;
while(n>2){
[a,b,n] = [b,a+b,n-1];
}
return b;
}
(1)递归+dfs
类似一个二叉树前序遍历,左儿子=f(n-1),右儿子=f(n-2),递归遍历
function fibonacci(n) {
if(n==0)return 0;
if(n==1)return 1;
let left=fibonacci(n-1);
let right=fibonacci(n-2);
return left+right;
} function fibonacci(n) {
let arr=[]
arr.fill(-1)
function dfs(n,arr){
if(n==0)return 0;
if(n==1)return 1;
if(arr[n]!=undefined){
return arr[n]
}
let left=fibonacci(n-1);
let right=fibonacci(n-2);
arr[n]=left+right
return left+right;
}
return dfs(n,arr)
} 只记录前面两个状态
function fibonacci(n) {
if(n<=1) return n;
let pre=0;
let prre=1;
for(let i=2;i<=n;i++){
let t=pre+prre;
pre=prre;
prre=t;
}
return prre;
} function fibonacci(n) {
let array = []
array.length = n+1
array[0] = 0
array[1] = 1
for (let i = 2; i < array.length ; i++){
array[i] = array[i-1] + array[i-2]
}
return array[n]
}