文章出處

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

其實題目很水...就是一個等比數列通項公式嘛
f(0)=1
f(1)=1
f(n)=f(0)+f(1)+...+f(n-1)

==>
f(n)=2*f(n-1) (when n>=2)

==>
f(n)=2^(n-1)

class Solution {
public:
    int jumpFloorII(int number){
        /*
        暴力寫法
        if(number==0){
            return 1;
        }    
        if(number==1){
            return 1;
        }
        
        int tot=0;
        for(int i=1; i<=number; i++){
           tot = tot + jumpFloorII(number-i);
        }
        return tot;
        */
        /*
        稍微寫一下,發現遞推式可以化簡
        if(number==0 || number==1){
            return 1;
        }
        return 2*jumpFloorII(number-1);
        */
        //再精簡一點,這不就是一個等比數列嘛
        return int(pow(2,number-1));
    }
};

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()