在这个问题中,我们需要求解给定 n 级楼梯,每次可以爬 1 级或 2 级,问有多少种不同的方法可以爬到楼梯顶部。 这个问题可以用一种经典的递归算法解决,即斐波那契数列。
斐波那契数列是一种非常著名的数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …,即第 i 个数等于前两个数之和。在爬楼梯的问题中,可以将每次爬 1 级或 2 级的方案数视为一种状态,那么到达第 i 级楼梯的方法数即为到达第 i-1 级楼梯和第 i-2 级楼梯的方法数之和。
我们可以用递归的方式实现这个算法,但是递归存在重复计算的问题,影响算法的效率,因此我们可以采用记忆化搜索的方式来优化递归算法,避免重复计算,提高算法效率。
以下是 Python 代码实现:
class Solution:
cache = {} # 存储已经计算过的结果
def c