階段を登ります

問題

カエルは、クラス1レベルにジャンプすることができ、あなたはまた、レベル2に飛び乗っすることができます。
カエルはどのように多くのジャンプ(別の計算異なる結果の順序)は、n級レベルの合計を求めて飛び込みました。

アルゴリズム1:再帰的に

あなたが登りたいとtarget階段のステップを

  • ターゲットから階段を登るtarget-1階段を登ります
  • できるからtarget-2ステップ登る
    仮説を登っtargetステップF(ターゲット)メソッドを、それを分けることができますF(target-1)+F(target-2)
  • 登るtarget-1だけでなく、からtarget-3target-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;
   }
彼は198元の記事を発表 ウォン称賛20 ビュー20000 +

おすすめ

転載: blog.csdn.net/ZHOUJIAN_TANK/article/details/104902564