递归
function returnFibon(n) {
if (n < 2) {
return n
} else {
return returnFibon(n - 1) + returnFibon(n - 2)
}
}
动态规划 (存入数组)
function dyFibon(n) {
let arr = []
for(let i = 0; i <= n; i++) {
arr[i] = 0
}
if(n === 0) {
return 0
} else if (n === 1 || n === 2) {
return 1
} else {
arr[1] = 1
arr[2] = 1
for (let i = 3; i <= n; i++) {
arr[i] = arr[i - 1] + arr[i - 2]
}
return arr[n]
}
}
动态规划 (不存数组)
function iterFibon(n) {
if(n > 0) {
let last = 1,
next = 1,
result = 1
for(let i = 2; i < n; i++) {
result = last + next
next = last
last = result
}
return result
} else {
return 0
}
}