这一章从数系的分类开始,逐步过渡到算法、算法分析和递归。它连接了数学定义与计算机程序中的离散步骤。

数系与取整函数

自然数、整数、有理数、无理数和实数构成常见的数系层次。对任意实数 xx,floor 和 ceiling 分别满足

xxx\lfloor x\rfloor\le x\le\lceil x\rceil

例如

12=1,12=1,12=0\left\lceil\frac12\right\rceil=1, \qquad \left\lfloor-\frac12\right\rfloor=-1, \qquad \left\lceil-\frac12\right\rceil=0

原稿在这组例子中曾把两个 ceiling/floor 值写反,迁移时已修正。

对正整数 yy,整数余数可以写成

xmody=xyxy,0xmody<yx\bmod y=x-y\left\lfloor\frac{x}{y}\right\rfloor, \qquad 0\le x\bmod y<y

算法与递归

算法需要明确输入、输出、步骤和终止性。复杂度分析则估计输入规模增长时,运行时间或空间需求如何变化。递归算法把当前问题化为更小的问题,因此必须同时说明基础情形和递归步骤。

递归定义与数学归纳法有密切关系。证明递归算法正确时,通常可以使用循环不变量、结构归纳或普通数学归纳法。

英文正文中的流程图和伪代码仍按源文件记录为待转换资产。后续会把算法块改写成博客支持的 pseudocode fence,并逐个检查复杂度结论。