题目地址
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路
- 递归
- 记跳 n 级台阶有
f(n)
种方法- 如果第一次跳 1 级,那么之后的 n-1 级有
f(n-1)
种跳法 - 如果第一次跳 2 级,那么之后的 n-2 级有
f(n-2)
种跳法
- 如果第一次跳 1 级,那么之后的 n-1 级有
- 实际上就是首两项为 1 和 2 的斐波那契数列
code
class Solution {
public:
int jumpFloor(int number) {
int f = 1;
int g = 2;
number--;
while (number--) {
g = g + f;
f = g - f;
}
return f;
}
};
其实不难发现,和我们上次的题目几乎一模一样
剑指offer刷题笔记——斐波那契数列