当使用递归实现斐波那契数列时无限调用会使内存无限占用
- 不优化会数太大就会内存占满导致网页很卡,递归的的数据结构又是二叉树,调用执行重复的使用值,优化把已经得到的值,存到对象里,下一次取就不用递归了。
//斐波那契数列: 1 1 2 3 5 8 ......
let obj = {}
function getNum(n) {
if (n in obj) {
return obj[n]
} else {
if (n == 1 || n == 2) {
return 1
}
obj[n] = getNum(n - 1) + getNum(n - 2)
return obj[n]
}
}
console.log(getNum(100))