题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
时间限制:1秒 空间限制:32768K
代码实现
public class Solution {
public int JumpFloor(int target) {
if(target < 3){
return target;
}
int previousTwo = 1, previous=2, result =0;
for(int i = 3; i <= target; i++){
result = previousTwo + previous;
previousTwo = previous;
previous = result;
}
return result;
}
}
解题思路
每次跳台阶都有两个选择,要么跳1级,要么跳2级。只有1级台阶的时候只有跳1级1种跳法,有2级时有每次1级1级跳两次和直接跳2级两种跳法,当有3级台阶的时候,我们可以从第2级跳1级到第3级,也可以从第1级跳2级到第3级,所以3级台阶的总跳法,就是1级台阶的总跳法和2级台阶的总跳法的总和,由此我们就发现了一个规律从3级之后的算法为 f(n)=f(n-1)+f(n-2),发现我们要求得结果符合斐波那契数列。所以我们想知道 n 级台阶总共有多少跳法,只要将 n-1 的跳法加上 n-2 的跳法就可以了。
欢迎关注公众号:「努力给自己看」