題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
題解
跳上1級臺階:1種
跳上2級臺階:
- 最後跳1級,1種
- 最後跳2級,1種
跳上3級臺階:
- 最後跳1級,2種
- 最後跳2級,1種
- 最後跳3級,1種
…
…
跳上n級臺階:
- 最後跳1級,f(n-1) 種
- 最後跳2級,f(n-2) 種
- …
- …
- 最後跳n-1級,f(1) 種
- 最後跳n級,1 種
即 f(n) = f(n-1) + f(n-2) + … f(1) + 1;
同理 f(n-1) = f(n-2) + f(n-3) + … f(1) + 1
兩式相減得:f(n) = 2f(n-1)
即:
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
temp = 1
if number == 1:
return temp
for i in range(2, number+1):
temp = temp*2
return temp