劍值offer66題之每日一題——第九題
阿新 • • 發佈:2018-11-12
題目描述:
變態跳臺階:一隻青蛙一次可以跳上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);
}