实现斐波那契数列:
1 1 2 3 5 8 13 21 34 55 ···
- fib(1) = 1
- fib(2) = 1
- fib(n) = fib(n-1) + fib(n-2)
for循环实现
function fib(n){
let val1 = 1, val2 = 1, temp
if(n === 1) return val1
for(let i=3; i<=n; i++){
temp = val1 + val2 val1 = val2
val2 = temp }
return val2
}
递归实现
function fib(){
if(n === 1 || n === 2) return 1 return fib(n-1) + fib(n-2)
}
用空间换效率
function fib(n) {
let arr = [0, 1, 1]
for(i=3; i<=n; i++) {
arr[i] = arr[i-1] + arr[i-2]
}
return arr[n]
}
使用缓存提升效率
function fib(n) {
let cache = [0, 1, 1]
function _fib(n) {
if(cache[n]) return cache[n]
cache[n] = _fib(n-1) + _fib(n-2)
return cache[n]
}
return _fib(n)
}