题目描述
一只青蛙一次可以跳上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