题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:这道题目一开始想用递归来算,但是时间复杂度很大,后来看了别人的思路发现很简单:
x个台阶的跳法为f(x)=f(x-1)+f(x-2)+…+f(x-(x-1))+f(x-x)
则x-1级台阶的跳法为f(x-1)=f(x-2)+…+f(1)+f(0),由此可得f(x)=2*f(x-1)
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
if number==0 or number==1:
return 1
else:
return self.jumpFloorII(number-1)*2