递归法和动态规划法解决本题
(1)递归法
这是一种自上而下的解决方法,即要想求f(n),需要先求f(n-1),f(n-2),f(n-3)...,依次类推。这种方法的实现是通过调用函数本身来实现的。
实现代码如下:
class Solution:
def jumpFloorII(self, number):
# write code here
#递归
if number==0:
return 1
f_num=0
for i in range(1,number+1):
f_num+=self.jumpFloorII(number-i)
return f_num(2)动态规划法
这是一种自下而上的解决办法,即要想求f(n),先通过f(0),f(1)求f(2),再求f(3)...,以此类推,知道求到f(n)。这种方法的实现一般是通过for循环来实现。(动态规划法计算量要小,因为没有重复计算)
实现代码如下:
class Solution:
def jumpFloorII(self,number):
process=[0]*(number+1)
process[0]=1
process[1]=1
for i in range(2,number+1):
a=0
for j in range(i):
a+=process[j]
process[i]=a
return process[number]
京公网安备 11010502036488号