CC++ & Algorithm

算法入门:为什么说菜谱和起床步骤都是算法?

2026年7月10日关联知识点:什么是算法4 次阅读

你有没有试过按照菜谱做蛋糕,结果做出来像砖头?问题可能不在你,而在菜谱写得不够精确——“加适量面粉”这种描述,你让机器人怎么理解“适量”?在编程世界里,类似的尴尬天天上演:人类觉得理所当然的指令,计算机根本听不懂。这背后藏着一个核心概念:算法

算法不是代码,是一套清晰步骤

很多人一听到“算法”就想到刷LeetCode、动态规划、图搜索,觉得高深莫测。其实你从小学就开始接触算法了——做蛋糕的食谱、打游戏的攻略、甚至每天早上起床的流程,都是算法。

睁眼 → 坐起来 → 穿衣服 → 刷牙 → 吃早饭

这不就是一个“起床算法”吗?它有明确的输入(你从床上醒来),有确定的步骤(每个动作顺序固定),有输出(吃完早饭出门)。计算机也是如此,只不过它需要更精确的描述。

a = 3
b = 5
sum_result = a + b
print("和是:", sum_result)

这段Python代码实现的就是一个最简单的“两数相加”算法。你看,它不需要高深技巧,就是把“加法的步骤”翻译成计算机能理解的语言。每个算法都有三个基本特征:有输入(a和b)、有输出(打印结果)、步骤明确(加和打印)。哪怕你写个几十万行的复杂程序,底层也是由这样一个个小算法拼接起来的。

自然语言描述:谁都看得懂,但谁都可能理解错

既然算法就是步骤,那我直接用中文写行不行?当然可以,而且很多程序员在写代码之前,都会先用自然语言把思路理一遍。

比如我们要描述一个“找最大数”的算法:

  1. 拿到一堆数字
  2. 假设第一个数字是最大的
  3. 依次拿后面的数字和这个最大的比较
  4. 如果后面的数字更大,就把它当作新的最大的
  5. 最后报出那个最大的数字

这不就一目了然了吗?任何人都看得懂。对应到Python代码也很直接:

numbers = [3, 7, 2, 9, 5]
max_num = numbers[0]
for num in numbers[1:]:
    if num > max_num:
        max_num = num
print("最大数是:", max_num)

但是自然语言有个致命缺点:歧义。比如“把鸡蛋打在碗里”,有人先打蛋再放碗,有人先放碗再打蛋——结果完全不同。计算机比人更较真,它无法容忍任何模棱两可。

所以自然语言描述只能作为“路线图”,不能直接交给计算机执行。不过它有个隐藏的好处:帮你在写代码前先想清楚逻辑,减少后期改bug的痛苦。

伪代码:连接人类和计算机的桥梁

既然纯中文太模糊,纯代码又太死板,有没有一种中间语言?有,就是伪代码

伪代码长这样:

输入一个数 n
如果 n 除以 2 的余数等于 0:
    输出 "偶数"
否则:
    输出 "奇数"

你看,它保留了编程里的关键词(if/else),但抛弃了Python严格的缩进、冒号、括号等语法。写伪代码的时候,你只需要关心逻辑,不用纠结语法细节。

n = int(input("请输入一个数字: "))
if n % 2 == 0:
    print("偶数")
else:
    print("奇数")

伪代码最大的优势是语言无关。你写完之后,可以把它翻译成Python、Java、C++——取决于你用什么工具。考试里也经常用伪代码出题,让你先理解算法逻辑,再写实际代码。

有同学可能会问:那我不写伪代码,直接写代码不行吗?当然可以,但当你面对复杂问题时,写伪代码就像先画设计图再施工,能避免方向性错误。我见过太多人一上来就敲代码,结果逻辑漏洞百出,改到怀疑人生。

算法的基本特征:一道题就能说清楚

说到算法的特征,有个很经典的题目:

下列哪一项不是算法的基本特征?

选项通常是“有输入”“有输出”“步骤明确”“能解决所有问题”之类的。如果你理解了前面的内容,马上就能排除——算法要求步骤明确必须有输出(哪怕只是打印一个结果),输入可以为零(比如一个算法只输出当前的系统时间)。但算法不能解决所有问题,它只能解决特定的一类问题。所以“能解决所有问题”显然不是基本特征,那是超能力。

另一个判断题更直接:

一个算法可以没有输入,但必须至少有一个输出。

这句话是正确的。为什么?因为算法存在的意义就是“解决问题产生结果”。没有输出,计算机执行完一遍算法有什么用?用户根本不知道结果。没有输入是可以的,比如一个算法只做固定运算,不需要外部数据。

这两个题目正好体现了算法最核心的约束——精准、有产出。如果你在写算法时忘记了输出,计算机可不会替你着急,它只会默默等着,然后什么也不做。

从菜谱到代码:你的学习路径

如果你刚开始学编程,我建议你按这个顺序练习:

  1. 先用自然语言描述你要做的事(比如“计算全班平均分”)
  2. 再改成伪代码,加上if/for等关键词
  3. 最后翻译成Python,补充语法细节

这样三步走,逻辑清晰,代码出错率极低。等你熟练了,自然可以跳过自然语言直接写伪代码,甚至直接写代码。

别怕算法,它不过是你每天在用的“做事的步骤”。只不过现在你学会了用更精确的方式描述它,并交给计算机去执行。


关于作者

我是赵老师,持有 NOI 信息学奥赛教练证书,拥有 15 年以上的软件开发经验,从事信息学少儿编程教学已有 8 年时间。

这些年累计帮助 多名 学生通过编程特长升入自己心仪的目标学校。

如果你在编程学习上有任何疑问,欢迎联系我:18620372957(微信同号)

这篇文章对你有帮助吗?

成为第一个评价的人

想系统学习这个知识点?查看完整知识点 →