問題
カエルは、クラス1レベルにジャンプすることができ、あなたはまた、レベル2に飛び乗っすることができます。
カエルはどのように多くのジャンプ(別の計算異なる結果の順序)は、n級レベルの合計を求めて飛び込みました。
アルゴリズム1:再帰的に
あなたが登りたいと
target
階段のステップを
- ターゲットから階段を登る
target-1
階段を登ります- できるから
target-2
ステップ登る
仮説を登っtarget
ステップF(ターゲット)メソッドを、それを分けることができますF(target-1)+F(target-2)
。- 登る
target-1
だけでなく、からtarget-3
かtarget-2
、
導入することができます。
F(target)=F(target-1)+F(target-2)=F(target-2)+F(target-3)+F(target-2)
これは基本的に料金になるカット布シリーズ
public int JumpFloor(int target) {
//只有1个台阶有一种
if(target==1){
return 1;
//有两个台阶有2种跳发
}else if(target==2){
return 2;
//有target个台阶
//这一次条1个台阶,则接下来需要跳target-1个台阶
//这一次跳2个台阶,则接下来需要条target-2个台阶
}else{
return JumpFloor(target-1)+ JumpFloor(target-2);
}
}
循環フォーム
//循环
public int JumpFloor2(int target){
//
int preNum = 2;
int prePreNum = 1;
int result = 1;
//爬一节台阶
if(target==1){
return 1;
}
//爬两节台阶
if(target==2){
return 2;
}
//爬target节台阶
// 需要知道爬前面台阶的反方
for(int i=3;i<=target;i++){
result = preNum+prePreNum;
prePreNum=preNum;
preNum=result;
}
return result;
}