斐波那契列数JS的三种实现
大家是怎么实现斐波那契列数的
1,1,2,3,5,8...
f(n)=f(n-1) + f(n-2)
方法一:
function f(n){ if(n == 1 || n == 0){ return 1; } return f(n-1) + f(n-2); }
再给两种解法,对比一下
方法二:
function f(n) { var arr = []; var value = null; function _f(n) { if (n == 1 || n == 0) { return 1; } if (arr[n]) return arr[n]; value = _f(n - 1) + _f(n - 2); arr[n] = value; return value; } return _f(n); }
还有一种更简单的用的是数组存储
方法三:
function fn(n) { var dp = new Array(n + 1); dp[0] = dp[1] = 1; for (let i = 2, length = dp.length; i < length; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[n]; }