递归法和动态规划法解决本题
(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]