題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
解題思路
記憶化遞歸
之前的題目是一次只能跳1或者2個臺階,現在是可以跳n個臺階,因此可以使用一個循環來分別加n-1,n-2, n-3,...,n - n。
class Solution: def __init__(self): self._dict = {} def jumpFloorII(self, number): def dfs(n): if n == 0: return 1 if n < 0: return 0 if n == 1: return 1 if n in self._dict: return self._dict[n] self._dict[n] = 0 for i in range(1, number + 1): self._dict[n] += dfs(n - i) return self._dict[n] res = dfs(number) return res S = Solution() print(S.jumpFloorII((5)))