题目描述:一只青蛙一次可以跳上一级台阶,也可以跳上两级。求一只青蛙跳上n级台阶总共有多少种跳法(先后次序不同算不同的结果)
第一种分析方法,归纳总结:
从上表可以发现:
当n=1时,f(n)=1
当n=2时,f(n)=2
当n=3时,f(n)=3
当n=4时,f(n)=5
当n=5时,f(n)=8
当n=6时,f(n)=13
由此得出结论:n>2时,f(n) = f(n-1) + f(n-2)
第二种分析方法,分析法:
青蛙从n=1开始跳和从n=n开始跳是一样的。
当青蛙第一步跳了1级台阶之后,它还有(n-1)个台阶要跳,因此,青蛙选择第一步跳1级台阶的跳法取决于后面(n-1)级台阶的跳法,记为f(n-1);然后青蛙第一步还可以选择一次跳两级台阶,此时,青蛙还有(n-2)级台阶要跳,因此,青蛙选择第一步跳1级台阶的跳法取决于后面(n-2)级台阶的跳法,记为f(n-2)。所以,青蛙跳到n级台阶的总跳法记为:f(n) = f(n-1) + f(n-2)
综上分析可知:这个问题的通项为
n=1时,f(n)=1
n=2时,f(n)=2
n>2时,f(n)=f(n-1)+f(n-2)
python示例代码1:
def jumpFloor(self, number):
res = [1, 1, 2] # 这里第0项是无意义的
while len(res) <= number:
res.append(res[-1] + res[-2])
return res[number]
python示例代码2:
def jumpFloor(self, number):
if number < 1:
return 0
if number == 1:
return 1
if number == 2:
return 2
ret = 0
a = 1
b = 2
for i in range(3,number+1):
ret = a+b
a = b
b = ret
return ret
python示例代码3:
def jumpFloor(self, number):
a = 1
b = 1
for i in range(0,number):
a,b = b,a+b
return a欢迎关注,一起学习