[劍指offer][Java]跳臺(tái)階

題目

一只青蛙一次可以跳上1級(jí)臺(tái)階,也可以跳上2級(jí)。求該青蛙跳上一個(gè)n級(jí)的臺(tái)階總共有多少種跳法(先后次序不同算不同的結(jié)果)。

程序核心思想

跟斐波那契是一樣的思想??梢蕴患?jí)也可以跳兩級(jí),就說(shuō)明有兩個(gè)基線條件。

一個(gè)青蛙怎么跳上n級(jí)臺(tái)階呢?可以從n-1級(jí)跳一級(jí)上去(這樣的跳法的次數(shù)跟跳上n-1級(jí)是一樣的,因?yàn)閺膎-1級(jí)跳上n級(jí)只能有一種跳法),或者可以從n-2級(jí)跳兩級(jí)上去(這樣的跳法的次數(shù)跟跳上n-2級(jí)也是一樣的,因?yàn)閺膎-2級(jí)跳上去是一次跳兩級(jí)。那么有人要問(wèn)了,從n-2級(jí)跳到n級(jí)還差兩級(jí)臺(tái)階,為什么不能分兩種方式,一種是一級(jí)一級(jí)跳,一種是一次跳兩級(jí)呢?因?yàn)槿绻患?jí)一級(jí)跳的話,一定會(huì)跟前面從n-1級(jí)跳上去的一種方法重復(fù),所以只能一次跳兩級(jí))。

所以跳上n級(jí)臺(tái)階的辦法就是用跳上n-1臺(tái)階的辦法數(shù)+跳上n-2級(jí)臺(tái)階的辦法數(shù)。

Tips

同斐波那契數(shù)列,http://m.itdecent.cn/p/eaef7b2711fc

代碼

public class Solution {
    public int JumpFloor(int target) {
        if(target == 1){
            return 1;
        }else if(target == 2){
            return 2;
        }else{
            return JumpFloor(target - 1) + JumpFloor(target -2);
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容