跳台階算法題


一、跳台階題目

    1. 一只青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上一個n級的台階總共有多少種跳法(先后次序不同算不同的結果)。

     分析:從題目中可以看出青蛙每次跳到台階有兩種情況:一次跳1級和一次跳2級。

                假設:   一共6階台階,如果從底第5階一步跳到第六階,那么跳到第五屆有多少方法,跳到第六階就有多少方法;

                           如果從底第4階兩步跳到第六階,那么跳到第四階有多少方法,跳到第六階就有多少方法;

                          那么跳到第六階總的方法就是: f(6) = f(5) + f(4);由此可推出其他的。。。。。

                從這個式子看出時非彼拉切數列,所以

 

// 方法一
public
static int f(int n) { if (n==0){ return 0; }else if (n==1){ return 1; }else if (n==2){ return 2; }else { return f(n-1)+f(n-2); }f }


// 方法2
public static int f(int n) {
       int a = 1;
int b = 0;
for (int i=0; i<n; i++) {
a = a+b;
b = a-b;
}
return a; }
 

 

       2.一只青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的台階總共有多少種跳法。

          分析:1.有題中可以看出青蛙每次可以跳的台階數為1、2、3.......n;

                     2.假設台階為1時,f(1)=1;

                        假設台階為2時,f(2)=f(2-1)+f(2-2); (第一次跳一階或者第一次跳兩階);

                         假設台階為3時,f(3)=f(3-1)+f(3-2)+f(3-3);

                                             .

                                             .

                         假設台階為n-1時,f(n-1)=f((n-1)-1)+f((n-1)-2)+........f((n-1)-(n-1))=f(n-2)+f(n-3)+......................+f(1)+f(0);

                         假設台階為n時, f(n)=f(n-1)+......................+f(2)+f(1)+f(0);

                     3.綜上可得出,跳n階的台階的方法有:

                              f(n)=f(n-1)+......................+f(2)+f(1)+f(0);

                             f(n) - f(n-1) :  f(n)=2*f(n-1)

                                    |   0                ,(n=0)

                      f(n) =     |   1                ,(n=1)

                                    |    2*f(n-1)     ,(n>1)

 

 public static int f(int n) {
        if (n==0){
            return 0;
        }else if (n==1){
            return 1;
        } else {
            return 2*f(n-1);
        }
    }


// 方法二
 public static int f(int n) {
     int a = 1;
int b = 0;
for(int i=1; i< n ; i++) {
b = a<<1; //左移乘2 , 右移除二
a = b;
}
return b; }
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM