變態(tài)跳臺階

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

解析
解釋辦法多種
①因?yàn)閚級臺階,第一步有n種跳法:跳1級、跳2級、到跳n級
跳1級,剩下n-1級,則剩下跳法是f(n-1)
跳2級,剩下n-2級,則剩下跳法是f(n-2)
所以f(n)=f(n-1)+f(n-2)+...+f(1)
因?yàn)閒(n-1)=f(n-2)+f(n-3)+...+f(1)

所以f(n)=2*f(n-1)

②每個臺階都有跳與不跳兩種情況(除了最后一個臺階),最后一個臺階必須跳。所以共有2^(n-1)中情況

Java

/**
 *  遞歸,因?yàn)?的n次方可以按位運(yùn)算,所以效率很高
 * 運(yùn)行時間:17ms
 * 占用內(nèi)存:9104k
 */
public int jumpFloorII(int target) {
    if (target <= 2) {
        return target;
    }
    return 2 * jumpFloorII(target-1);
}

/**
 * 循環(huán)
 * 運(yùn)行時間:17ms
 * 占用內(nèi)存:9452k
 */
public int jumpFloorII2(int target) {
    if (target <= 2) {
        return target;
    }
    int one = 1;
    int two = 2;
    for (int i = 3; i <= target; i++) {
        one = two;
        two = 2 * two;
    }
    return two;
}

Python

class JumpFloorII:
    def jumpFloorII(self, number):
        result = 1
        for i in range(2, number+1):
            result = 2*result
        return result

    def jumpFloorII2(self, number):
        return 2**(number-1)


if __name__ == '__main__':
    jumpFloorII = JumpFloorII()
    print(jumpFloorII.jumpFloorII(6))
    print(jumpFloorII.jumpFloorII2(6))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 1. 變態(tài)跳臺階 題目描述 一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級...
    彈鋼琴的崽崽閱讀 368評論 0 3
  • 題目描述一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳...
    wenyilab閱讀 267評論 0 0
  • ??環(huán)境:??偷木幾g環(huán)境??語言:JavaScript??難點(diǎn):??題目:一只青蛙一次可以跳上1級臺階,也可以跳上2級…...
    我的天氣很好啦閱讀 613評論 0 0
  • 題目描述一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳...
    ProudLin閱讀 165評論 0 0
  • 寶貝女兒,突然想跟你聊會天,但又不知道從哪里開始,從你來到我們的身邊開始:那一刻是很激動、美好,希望把全世界最好的...
    謝林萍閱讀 204評論 0 1

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