青蛙跳阶问题
题目:一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级台阶。求该青蛙跳上一个 10 级的台阶总共有多少种跳法。
普通递归
1 2 3 4 5 6 7 8 9 10 11 12
| function fn(n) { let obj = {} if (n === 1) { return 1 }
if (n === 2) { return 2 }
return fn(n - 1) + fn(n - 2) }
|
优化的递归
采用一个对象存储重复使用的项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function fn(n) { let obj = {} if (n === 1) { return 1 }
if (n === 2) { return 2 }
if (obj[n]) { return obj[n] } else { obj[n] = fn(n - 1) + fn(n - 2) return obj[n] } }
|