好像是重复执行,但又没那么重复。

登录以参加训练计划

我们经常会发现同样的一个问题会反复的出现、反复的出现,但又不是简单的重复执行。那怎么办呢?

递归递推的核心思路都是一致的,找到某个状态怎么来的 ( 递归 ),或者是某个状态可以去哪里 (递推)

状态就是问题参数化的过程,就是说,把问题里面变化的部分用参数提取出来,形成一个没有具体数字的问题。 ( 比如 n级台阶的走法,而不是3级、5级的走法 ; 又比如用v块钱买到最具攻击力的装备,而不是用100块买到的等等)。

然后找到这些参数从大到小 or 从小到大的关系,从而得出递归 or 递推公式。

优化

递归的过程中会出现重复计算的部分,我们可以引入记忆化策略,把算过的结果用数组存下来。 ( 一般来说,递归函数有NN个参数,就需要一个NN维数组来做结果保存 )

递归 + 记忆化 对比 递推的优点

  1. 好写 - 不用递推顺序、不用管初值
  2. 自带剪枝 - 递推可能会存在搜索路径上不存在的状态的计算

章节 1. 递归

开放

题目 尝试 AC 难度
1110   分解质因数 111 13 8
1112   有趣的数列 77 10 8
1113   史莱姆的数量 55 7 8
618   Hanoi双塔问题 50 5 9
1114   上台阶 87 9 9
1115   上台阶 - 鹦鹉班 28 6 8
1116   上台阶 - 日久失修 88 9 9
1117   上台阶 - 魔幻版 67 3 9
1120   汉诺塔搬迁 3 2 10
551   二的幂次方 9 2 10

章节 2. 形状

开放

题目 尝试 AC 难度
1221   铺地砖 - 1*2 24 5 8
1222   铺地砖 - 1*2 + 2*2 52 7 8
1223   铺瓷砖 - 奇形怪状 28 1 10

章节 3. 二维平面上的

开放

题目 尝试 AC 难度
1228   回家的路 26 5 8
579   过河卒 8 1 10
 
参加人数
9
创建人