var fib = function (N) { if (N == 0) return0; if (N == 1) return1; returnfib(N - 1) + fib(N - 2); };
降维打击,解决重复计算问题,不明白的往下翻看一下下面的干货题解就行了。
1 2 3 4 5 6 7 8 9 10 11
/** * @param {number} N * @return {number} */ var fib = function (N) { var dp = [0, 1, 1]; for (var i = 3; i <= N; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[N]; };
再次降维,优化,不明白的往下翻看一下下面的干货题解就行了。
1 2 3 4 5 6 7 8 9 10 11 12
var fib = function (N) { if (N == 0) return0; if (N == 2 || N == 1) return1; var prev = 1, curr = 1; for (var i = 3; i <= N; i++) { var sum = prev + curr; prev = curr; curr = sum; } return curr; };
var fib = function (N) { if (N == 0) return0; if (N == 1) return1; returnfib(N - 1) + fib(N - 2); };
降维打击,解决重复计算问题,不明白的往下翻看一下下面的干货题解就行了。
1 2 3 4 5 6 7 8 9 10 11
/** * @param {number} N * @return {number} */ var fib = function (N) { var dp = [0, 1, 1]; for (var i = 3; i <= N; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[N]; };
再次降维,优化,不明白的往下翻看一下下面的干货题解就行了。
1 2 3 4 5 6 7 8 9 10 11 12
var fib = function (N) { if (N == 0) return0; if (N == 2 || N == 1) return1; var prev = 1, curr = 1; for (var i = 3; i <= N; i++) { var sum = prev + curr; prev = curr; curr = sum; } return curr; };