题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:1 ≤n≤40
要求:时间复杂度:O(n) ,空间复杂度: O(1)
示例1
输入:
2
返回值:
2
说明:
青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。因此答案为2 .
示例2
输入:
7
返回值:
21
解题思路
考虑这个过程很重要,也就是说考虑问题的思想,这里其实是动态规划
跳到第n个台阶,只有两种可能:(1)从第n-1个台阶跳1个台阶(2)从第n-2个台阶跳2个台阶
那么求出跳到第n-1个台阶和第n-2个台阶的可能跳法即可。
F(n):n个台阶的跳法
递推公式:F(n)=F(n-1)+F(n-2)
其中F(1)=1,F(2)=2。
public class Solution {
public int jumpFloor(int target) {
if(target==1)
return 1;
if(target==2)
return 2;
else
return jumpFloor(target-1) + jumpFloor(target-2);
}
}