算法的五大基本特性是:
- 有穷性(Finiteness):算法必须在有限步内结束,不能无限循环;
- 确定性(Definiteness):算法的每一步骤必须有明确无歧义的定义,相同输入总产生相同输出;
- 可行性(Effectiveness / Feasibility):算法中每一步都必须是基本、可执行的操作(即原则上能用纸笔或计算机在有限时间内完成);
- 输入(Input):算法有零个或多个输入,这些输入取自特定集合;
- 输出(Output):算法至少有一个输出,且该输出与输入之间存在明确关系。
✅ “高效性”(如时间复杂度低、空间占用少)属于算法质量的评价标准(如正确性、健壮性、可读性、可扩展性、高效性等),而非定义算法所必需的基本特性——即:一个算法可以效率很低(如指数级),但只要满足上述五点,仍是“算法”。
类比:一辆车的基本属性是“有轮子、能行驶、有方向盘”,而“百公里油耗低”是性能指标,不是定义“车”的必要条件。
“零输入”符合算法的输入特性,是因为算法定义中对“输入”的要求是:有零个或多个输入(即输入集合可以为空)。关键不在于“是否需要外部提供数据”,而在于算法是否在逻辑上明确其输入域——当输入为空集时,算法仍能从确定的初始状态出发,执行有限、确定、可行的步骤,并产生输出。
✅ 这完全满足五大特性:
- 有穷性:步骤有限;
- 确定性:每步无歧义;
- 可行性:所有操作可执行;
- 输入:显式定义为“无输入”(即输入集合为 ∅);
- 输出:有明确定义的结果。
🔹 经典示例:计算并输出前100个正整数的和
def sum_first_100():
total = 0
for i in range(1, 101): # i = 1,2,...,100
total += i
return total # 输出:5050
- ✅ 无参数(零输入);
- ✅ 每次运行结果恒为
5050(确定性); - ✅ 仅含赋值、循环、加法(均可机械执行);
- ✅ 100次迭代 → 有穷性;
- ✅ 明确输出一个整数 → 满足输出特性。
其他合法零输入算法示例:
- 输出当前系统时间(输入隐含于系统状态,但算法本身不接收用户输入);
- 判定“4 是合数”并返回 True(硬编码逻辑,无需外部输入);
- 枚举并输出斐波那契数列前20项(起始值固定,无输入)。
⚠️ 注意:零输入 ≠ 无初始状态。算法总需有确定的初始配置(如变量初值、内存状态),这属于算法描述的一部分,而非“输入”。


2400

被折叠的 条评论
为什么被折叠?



