1. 程式人生 > >劍值offer66題之每日一題——第九題

劍值offer66題之每日一題——第九題

題目描述:

         變態跳臺階:一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

思路:本題前提一次可跳1~n階臺階,設F(n)為一次可跳1~n階臺階時n階臺階的跳法數,由上一題的分析可得:

F(1)=1

F(2)=F(2-1)+ F(2-2);//F(2-2)表示當前跳兩階,及一次跳完一算一種跳法,得F(0)=1

F(3)=F(3-1)+F(3-2)+F(3-3)

........

F(n)=F(n-1)+F(n-2)+...+F(n-n)

繼續分析:

F(n)=F(0)+F(1)+F(2)+...+F(n-3)+F(n-2)+F(n-1)

F(n-1)=F(0)+F(1)+F(2)+...+F(n-3)+F(n-2)

故F(n)=F(n-1)+F(n-1)=2*F(n-1)  

程式碼實現:

int jumpFloorII(int number) {
         if(number==0) return 1;
        else if(number==1) return 1;
        else return 2*jumpFloorII(number-1);
    }