# NC68 跳台阶
https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4 (opens new window)
# 描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
# 解答
下面是过程分析。
已知:
1. 爬到第 1 阶,只可能也只用爬 1 阶就能完成,共 1 种爬法
2. 爬到第 2 阶,可能是从先爬 1 阶到第 1 阶,然后再爬 1 阶到第 2 阶;也可能是直接爬 2 阶到第 2 阶,一共 2 种爬法
3. 爬到第 3 阶,可能直接来自于第 1 阶(一共 2 阶的距离),也可能来自于第 2 阶(一共 1 阶的距离),而如何爬到第 1 阶和第 2 阶?有多少种爬法?则回到了步骤 1 和 2
归纳一下:在第 n 阶时,可能是由从第 n-2 阶爬 2 阶达到,也可能由从第 n-1 阶爬 1 阶达到(n>2)
用 f(n) 记录 爬到第 n 阶时可能有多少种爬法,则:
f(1)=1
f(2)=2
f(n)=f(n−2)+f(n−1),n>2
function jumpFloor(n) {
if (n == 1 || n == 2) {
return n;
}
return jumpFloor(n - 2) + jumpFloor(n - 1);
}
module.exports = {
jumpFloor: jumpFloor,
};
# 参考
上一篇: 下一篇:
本章目录