递推算法通常有初始值。( )
递推和递归本质都是基于前几个状态推后续状态,没有‘初始值’作为基准,递推公式就无处落脚。
很多考生看到‘通常’二字就犹豫,觉得可能有例外。其实命题人就是拿‘通常’包装绝对概念,诱导你怀疑‘递推难道不需要初始值吗?’。还有一种坑是混淆‘递推’和‘迭代’,以为迭代变量可以替代初始值,但迭代变量只是更新工具,基准状态(初始值)依然必须存在。
【考点】递推初始值
递推算法的核心思想是:已知前若干个状态,利用固定规则推出后续状态。比如斐波那契数列,已知 f(0)=0、f(1)=1,再用 f(n)=f(n-1)+f(n-2) 往后推。这里的 f(0)、f(1) 就是‘初始值’。如果题目只给了递推公式,没给初始值,那递推就卡住了——从哪开始推?推多少步?所以‘初始值’是递推算法的必要组成部分,不是可有可无的辅助条件。
【命题视角】 命题人故意用‘通常’这个词,制造一种‘好像有例外’的错觉。实际上,递推算法的定义里就包含‘基准情形(initial values)’这一要素,不存在‘通常有,偶尔没有’的情况。反过来说,如果改成‘必须’,答案依然是正确;改成‘递推算法需要迭代变量’,那才可能选错误。这题考的是你对递推本质的理解,而不是咬文嚼字。
【思考心法】 拿到题先想:递推公式能独立工作吗?不能,它必须依赖一组已知的起始状态。再想:题目有没有给这些起始状态?给了就是初始值,没给就是缺条件。所以‘递推算法通常有初始值’这句话,从逻辑上就是绝对正确的。
【避坑】 最容易掉进的坑是看到‘通常’就怀疑‘有没有例外’。比如有人会说‘如果递推公式本身就是自洽的,不需要初始值也行’,这其实是把递推和纯数学归纳混为一谈。在编程和算法语境下,递推必须从某个具体的数值状态开始,否则无法落地。还有一种坑是误以为‘递归’的终止条件可以替代递推的初始值,但递归的终止条件是判断是否继续,而递推的初始值是提供计算起点,两者功能不同,不能互相替代。
【考频与趋势】 从题库统计看,‘递推’考点共考过 79 题,覆盖 7 个级别(2007-2026)。逐年分布:2007 年 1 题、2009 年 1 题、2015 年 1 题、2018 年 1 题、2023 年 12 题、2024 年 23 题、2025 年 24 题、2026 年 13 题、null 年 3 题。分赛事分布:GESP 六级 34 题、GESP 七级 27 题、GESP 八级 10 题、GESP 五级 3 题、NOIP 提高组初赛 3 题、CSP 提高级 1 题、NOIP 普及组初赛 1 题。近五年(2023-2026)递推相关题目占比接近 50%,说明该考点热度持续上升,命题人倾向于用概念辨析题来考察学生对算法本质的理解。
【预测】 基于数据趋势,未来 GESP 六级、七级仍可能继续出递推相关的概念辨析题,形式上可能仍用‘通常’‘一般’这类模糊词来包装绝对命题,考验学生能否透过文字看本质。暂无足够依据预测具体题型变化,但可以预期难度不会大幅降低,仍会聚焦于初始值、基准情形等核心概念。