70. 爬楼梯
递归解法
public class Solution {
// 用于缓存计算结果,防止重复计算
HashMap<Integer, Integer> map = new HashMap<>();
//设跳上 n 级台阶一共有 f(n) 种跳法,则 f(n) = f(n - 1) + f(n - 2)
// 而 f(0) = 1, f(1) = 1
public int climbStairs(int n) {
if (n <= 3) return n;
// 如果不存在,计算并缓存
if (!map.containsKey(n - 1)) {
map.put(n - 1, climbStairs(n - 1));
}
if (!map.containsKey(n - 2)) {
map.put(n - 2, climbStairs(n - 2));
}
// 直接取缓存结果相加返回
return map.get(n - 1) + map.get(n - 2);
}
}