1. 程式人生 > >【劍指Offer】06跳臺階

【劍指Offer】06跳臺階

題目描述

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

時間限制:1秒;空間限制:32768K

解題思路

利用數學歸納法可以看到:當n=1,f(1) = 1;當n=2,f(2) = 2;當n>2,f(n) = f(n-1) + f(n-2)。這是一組斐波那契數列,可以這樣理解:當n=1或2時,跳法是固定的;當n>2時,由於一次只能跳1級或2級,所以第n次的方案可以看作第n-1次方案下跳上1級臺階和第n-2次方案下跳上2級臺階的結果之和。

Python程式碼:

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        # write code here
        i = 1
        j = 2
        if number==1:
            return 1
        if number==2:
            return 2
        while number>2:
            j += i
            i = j-i
            number -= 1
        return j