题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路
记忆化递归:
对于输入值n,由于一次只能跳1格或者2格,所以递归方式可以对n-1和n-2进行同样方式的递归,终止条件就是n==0时返回一种方式,n==-1时返回0(表示走不通),并且每个n对应的值都在字典中进行存储
class Solution: def __init__(self): self._dict = {} def jumpFloor(self, number): def dfs(n): if n == 0: return 1 if n == -1: return 0 if n in self._dict: return self._dict[n] self._dict[n] = dfs(n - 1) + dfs(n - 2) return self._dict[n] res = dfs(number) return res S = Solution() print(S.jumpFloor(5))