問題描述:
一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
思考五分鐘
解題思路:
要想上n級臺階,那么必須先到n-2或者n-1階臺階。
可以設(shè)到n階臺階的函數(shù)為f(n).
則,當(dāng)n>2的時候有,f(n)=f(n-1)+f(n-2)
而f(0)=0,f(1)=1,f(2)=2。
這很類似于Fibonacci函數(shù),使用迭代或者遞歸都可以完成。
迭代實現(xiàn):
/*
**targrt目標(biāo)階數(shù)
**fn:到n階臺階的方法
*/
public int JumpFloor(int target) {
if(target==0)
return 0;
else if(target==1)
return 1;
else {
int f1=1,f2=2,fn=2;
for(int i=2;i<target;i++){
fn=f1+f2;
f1=f2;
f2=fn;
}
return fn;
}
}
遞歸實現(xiàn):
public int JumpFloor(int target) {
if(target==-1)
return 0;
else if(target==1)
return 1;
else if(target==2)
return 2;
else
return JumpFloor(target-1)+JumpFloor(target-2);
}