一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
class Solution:
#假定第一次跳的是1阶,那么剩下的是n-1个台阶,跳法是f(n-1)
#假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)
#……
#假定第一次跳的是n阶,那么剩下的是n-n个台阶,跳法是f(n-n)=f(0)
#那总的问题就变成了F(n)=F(n-1)+F(n-2)+…+F(1)+F(0)
# 又因为F(n-1)=F(n-2)+…+F(1)+F(0)
#两式相减,得:F(n)=2*F(n-1)
def jumpFloorII(self, number):
# write code here
counter=[1,1,2]#F(0),F(1),F(2)
if number<=2:
return counter[number]
else:
for i in range(3,number+1):
counter.append(2*counter[i-1])
return counter[number]