news 2026/1/23 12:58:31

每天五分钟:leetcode动态规划-递归与递推_day2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
每天五分钟:leetcode动态规划-递归与递推_day2

0)先记住一句话(贯穿两种写法)

到第n阶的方法数:

  • 最后一步要么走 1 阶:从n-1

  • 要么走 2 阶:从n-2

所以永远是:

f(n) = f(n-1) + f(n-2)


1)递归版本(从“大问题”往下问“小问题”)

✅ 1.1 纯递归(不推荐:会爆炸慢)

想法:我想知道f(n),那就去问f(n-1)f(n-2)

def climbStairs(n): if n <= 2: return n return climbStairs(n-1) + climbStairs(n-2)

为什么慢?

因为它会“重复算同一个问题”:

比如算f(5)

f(5)=f(4)+f(3) f(4)=f(3)+f(2) f(3)=f(2)+f(1)

你看:f(3)f(2)被算了很多遍。

复杂度:接近O(2^n),n 稍大就非常慢。


✅ 1.2 递归 + 记忆化(推荐:递归也能很快)

核心:每个f(k)只算一次,算过就记下来,下次直接拿。

def climbStairs(n): memo = {} def dfs(k): if k <= 2: return k if k in memo: return memo[k] memo[k] = dfs(k-1) + dfs(k-2) return memo[k] return dfs(n)

复杂度O(n)
因为1...n每个值只算一次。


2)递推版本(从“小问题”一路推到“大问题”)

递推就是:我先知道最小的答案,然后一步步算到 n。

✅ 2.1 DP 数组版(最直观)

dp[i] 代表到 i 阶的方法数 从 i=3 推到 n

复杂度O(n)时间,O(n)空间。


✅ 2.2 空间优化版(你写的版本:最常用

观察转移方程:

dp[i]只依赖dp[i-1]dp[i-2]
所以没必要保存整个数组,只保留最近两个数就够了。

class Solution: def climbStairs(self, n: int) -> int: if n <= 2: return n a, b = 1, 2 # dp[1], dp[2] for _ in range(3, n + 1): a, b = b, a + b return b

复杂度O(n)时间,O(1)空间。

3)递归 vs 递推:一眼对比

写法思维方向是否重复计算时间复杂度空间复杂度
纯递归自顶向下(n→1)✅会大量重复O(2^n)O(n) 递归栈
递归+记忆化自顶向下(n→1)❌不重复O(n)O(n)
递推 DP 数组自底向上(1→n)❌不重复O(n)O(n)
递推 空间优化自底向上(1→n)❌不重复O(n)O(1)

4)一句话解释

  • 递归:像问路——“到第 n 阶怎么走?那我先问到 n-1 怎么走,再问到 n-2 怎么走。”

  • 递推:像建楼——“先把 1 阶、2 阶的答案写出来,然后一层层推上去。”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/22 17:58:27

燕麦矮砧密植:水肥一体化系统的铺设要点

燕麦地里&#xff0c;老刘的燕麦长势整齐&#xff0c;穗大粒饱。"这套水肥系统真是帮了大忙&#xff0c;"他指着田间的滴灌设备说&#xff0c;"不仅省水省肥&#xff0c;产量还提高了三成。"认识燕麦矮砧密植燕麦矮砧密植&#xff0c;简单来说就是选用矮秆…

作者头像 李华
网站建设 2026/1/22 16:10:36

云南昆明/南宁/海南海口品牌快闪店设计搭建公司哪家好?

在消费升级与商业创新双重驱动下&#xff0c;国内城市核心商圈正涌现出一批以短期空间运营为特色的新型商业实践。这类空间通过主题化场景构建、限时性体验设计以及社交化互动机制&#xff0c;形成了独特的商业空间运营模式。其凭借差异化的内容呈现与精准的受众定位&#xff0…

作者头像 李华
网站建设 2026/1/22 18:33:46

外设与接口:基于内核 gpio-keys 子系统的按键处理

1 基本原理 在 Linux 中&#xff0c;gpio-keys 是一个平台驱动&#xff08;Platform Driver&#xff09;&#xff0c;它充当了物理 GPIO 硬件与 Linux 标准输入子系统&#xff08;Input Subsystem&#xff09;之间的“翻译官”。 整个处理流程自下而上分为四层&#xff1a; 硬件…

作者头像 李华
网站建设 2026/1/22 19:46:02

测试的“元认知”:智能体如何评估自身可靠性?

在软件测试领域&#xff0c;自动化与智能化正以前所未有的速度重塑工作流程。随着人工智能代理&#xff08;智能体&#xff09;广泛应用于测试用例生成、缺陷预测和持续集成&#xff0c;一个关键问题浮出水面&#xff1a;这些智能体如何像人类测试专家一样&#xff0c;对自身行…

作者头像 李华
网站建设 2026/1/15 22:15:12

本凡码农引领杭州小程序开发解决方案赋能企业创新与发展

本凡码农的杭州小程序开发解决方案为企业提供了一种高效的数字化转型工具。我们的目标是帮助品牌快速适应市场变化&#xff0c;提升用户体验。通过定制化的小程序&#xff0c;企业能够实现从线上到线下的无缝连接&#xff0c;简化业务流程&#xff0c;从而更好地满足用户需求。…

作者头像 李华
网站建设 2026/1/18 4:04:54

Windows11系统文件wer.dll丢失或损坏问题 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华