用 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] }