一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
n==1时,f(n)==1
n==2时,f(n)==2
n==3时,f(n)=f(2) + f(1) = 最后一步跳1个 + 最后一步跳2个
n==4时,f(n)=f(3) +f(2) = 最后一步跳1个 + 最后一步跳2个
···
n --> f(n) == f(n-1) + f(n-2)
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number == 1 or number== 2:
return number
prev, curr = 1, 2
for _ in range(3, number+1):
prev, curr = curr, prev+curr
return curr
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
n == 0 时,f(n) = 0
n == 1 时, f(n) = 1
f(n)= f(n-1)+ f(n-2)+ … + f(2)+ f(1)+ 1 = 2 **(n-1)
相比上一个跳台阶,这次可以从任意台阶跳上第n级台阶,也可以直接跳上第n级。因此其递归公式为各个台阶之和再加上直接跳上去的一种情况。
# -*- coding:utf-8 -*-
class Solution:
def jumpFloorII(self, number):
# write code here
if number == 0:
return 0
else:
return 2**(number-1)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。