斐波那契数列
常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
给定 N,计算 F(N)。
首先 我们理解斐波那契数列的概念:
我们先从一个常见的爬楼梯的问题入手,加入我要爬一节楼梯,每次只能爬一台阶或者俩个台阶 求 第N个台阶能有几种方式
递归的方式
var fib = function (n) {
if(n <= 1 ) return n
const cache = [0, 1]
for(let i = 2; i<=n; i++) {
cache[i] = cache[i-1] + cache[i-2]
}
return cache[n]
}
DP
function fib (n) {
if(n <= 1 ) return n
let cache = [0, 1]
function memo (number) {
if(cache[number] !== undefined) return cache[number]
cache[number] = memo(number - 1) + memo(number - 2)
return cache[number]
}
return memo(n)
}
function fibonacci(n) {
if(n<=1) return n
let prev2=0
let pre1=1
let result = 0
for(let i = 2; i<=n; i++) {
result = prev1 + prev2
prev2 = prev1
pre1 = result
}
return result
}