NC68 跳台阶
递归函数
{ 1 n=1
f(n) = { 2 n=2
{ f(n-1)+f(n-2) n>2
递归式,O(2^n)
public int jumpFloor(int target) {
if(target == 0){
return 1;
}else if(target < 0){
return 0;
}
return jumpFloor(target - 1) + jumpFloor(target - 2);
}
递归式的自底向上实现,O(n)
public int jumpFloor(int target) {
if(target <= 1){
return target;
}
int f1 = 2,f2 = 1;
for(int i = 3; i <= target; ++i){
int tmp = f1;
f1 = f1 + f2;
f2 = tmp;
}
return f1;
}