題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
題解
跳上1級臺階:1種
跳上2級臺階:2種
跳上3級臺階:
- 最後跳1級,2種
- 最後跳2級,1種
…
…
跳上n級臺階:
- 最後跳1級,f(n-1) 種
- 最後跳2級,f(n-2) 種
即 f(n) = f(n-1) + f(n-2)
看到這裏你肯定會發現這其實就是“斐波那契數列”的變種,不瞭解的可以看我這篇文章 牛客-劍指offer 07 | 斐波那契數列,直接上代碼:
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number == 1:
return 1
elif number == 2:
return 2
else:
n = 0
n1 = 1
n2 = 2
for i in range(3, number+1):
n = n1 + n2
n1 = n2
n2 = n
return n