0%

青蛙跳阶问题

青蛙跳阶问题

题目:一只青蛙一次可以跳上 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]
}
}