算法第二週作業04

Description

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

Solutions

青蛙要想跳到target級臺階,她可以從第0個臺階直接(一次)跳到target級,或者從第1級臺階直接跳到target級,...或者直接從第target-1級臺階直接跳到target級。

因此跳到target級臺階跳法JumpFloorII(target) = JumpFloorII(1) + JumpFloorII(2) + ... + JumpFloorII(target-1)

通過分析,其實對應的結果序列就是:1,2,4,8... 即爲指數序列

PS:之所以只考慮”直接“,不考慮間接,是因爲間接會導致重複,例如青蛙可以先跳到第m級臺階然後直接跳到target級(0->m->target),如果是間接方式:0->m->n->target,那麼就會和0->n->target的方式重複。

Code

public int JumpFloorII(int target) {
        if(target <= 0){
            // 非法輸入
            return 0;
        } else if(target == 1){
            // 遞歸終止條件
            return 1;
        } else {
            // 遞歸操作
            // return 2 * JumpFloorII(target-1);
	    // 乘方操作
	    return (int)Math.pow(2, target - 1);
        }
    }







發佈了40 篇原創文章 · 獲贊 13 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章