题目链接
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
记 n 与种数的关系为 f(n)
n = 1时,f(1) = 1;
n = 2 时,可以选择第一次跳一个台阶,跳两次,也可以一次跳上去。f(2) = 2;
n = 3 时,第一次跳一级,有 f(2) 种,第一次跳2级,有 f(1) 种;
n = i 时,第一次跳一级,有 f(i-1)种,第一次跳 2 级,有 f(i-2) 种。f(i) = f(i-1) + f(i-2)。
由此可以得道递推公式 f(n) = f(n-1) + f(n-2) (n > 2),是斐波拉契数列的变种。
public class Solution {
public int JumpFloor(int target) {
if (target <= 0)
return 0;
if (target <= 2)
return target;
int ret = 0;
int fir = 2;
int sec = 1;
for (int i = 3; i <= target; i++) {
ret = fir + sec;
sec = fir;
fir = ret;
}
return ret;
}
}