你问了一个极好的问题。
高中数学其实确实技巧性强一些,但是初中和小学学的内容很多都是算法,只是没告诉你他叫 “算法” 而已。算法只是一系列操作而已。(你要是想问高中为啥不教数据结构和 之类的复杂度分析,那当我没说……)
初中的一元二次方程求根,一个方程拿来整理成 的形式,然后计算 , 再计算 . 很标准的算法。
二元一次方程组也差不多,方程组里的方程编号以后 消去 的系数,然后解出 再代回去算出 ,也是很标准的算法(这叫高斯消元法,据说《九章算术》里也有)。如果推广成 元一次方程组, 个方程 个变量,再假设总有解(矩阵可逆),你可以试试把高斯消元法的程序写出来,很多人写不对(输入 矩阵 和 向量 ,求 使得 ,无解的时候报错)。
多项式乘法,展开以后合并同类项然后降幂排列,也是很标准的,输入两个数组,输出一个数组。
小学的竖式乘法也是算法,输入两个整数(更准确地说是十进制表示下的字符串),然后如此这般,就能算出他们的乘积,输出乘积的十进制字符串表示(如果不需要写成十进制字符串的话,37 * 73 本身就是一个数字,为啥一定要写成 2701?)。你可以仔细想想怎么把这个东西写成一个算法。
如果一元二次方程求根是算法听起来有点强词夺理的话,小学学的竖式除法(带余除法)更是一个很像编程里面提到的那种算法,这里你不能一步得到答案,只能得到答案的最高位,剩下的过程是个递归…… 比如 100000 ÷ 7 写成竖式,先在万位上个 1,然后 10 - 7 = 3,其实说了两件事,从商的角度看 100000 ÷ 7 = 10000 + 30000 ÷ 7, 从余数的角度看,100000 % 7 = 30000 % 7. 这里这个算法并没有结束!你要继续把 30000 ÷ 7 计算下去。结束条件是最后剩下 5 ÷ 7,因为 5 < 7, 所以商是 0,余数是 5. 这完全就是让做除法的人执行一个程序而已。(竖式开平方也是类似的。)
如果你小学学过速算的话,你可能已经会优化算法了,比如 13 * 17 = 221, 有些速算会告诉你,因为 3 + 7 = 10, 所以只用计算 3 * 7 = 21 就能得到答案 221,同理 12 * 18 = 216,只需要一次一位数乘法(加上一个 if 判断语句)就得到答案,原来需要四次一位数乘法和若干次加法。
小学或者中学奥数还有个算法叫辗转相除法,这个可以追溯到欧几里得(Euclidean algorithm)。这也是一个递归的算法,为什么一定会终止,最坏情况(两个相邻的斐波那契数)算法需要执行多少步,都不是显然的。
不知道初中还学不学尺规作图,尺规作图里也集结了很多算法(比如要画角平分线,或者垂直平分线,总有给定的操作,但你总要详细说明)。
高中比较简单的一些内容也是算法,比如等比数列等差数列的求和(输入首项和公差,输出和)。你感觉不到高中有算法只是因为高考之类题目难一点,综合性变强而已。很多具体技巧,比如二次函数的配方,也是具体的算法(只是你对这些太熟悉了,是你脑子里的 inline 函数,感觉不到这里有个 “算法”)。
不过,你对初等数学教育的批评我认为是很有道理的,我认为至少应该强调一次 “算法” 的概念,也许以二元/三元一次方程组为例子,展示一个算法(即高斯消元法,类似这种:Gaussian elimination)。这种展示性质的内容不太适合高考出题(不可能在高考试卷上让人写个算法吧),但是对开拓眼界是有帮助的。只是在高考的背景下容易像复数一样被边缘化,被认为是 “没什么卵用” 的东西。[Edit: 刚听说高中课本真有介绍算法的概念,还有人告诉我课本上介绍了牛顿法用切线逼近方程的根,感觉很赞。我暴露年龄了]
看完这些你可能觉得我在胡扯,“排序才是算法”(或者算斐波那契数列才是?),那你需要补的是一些抽象的能力和离散数学的水平,高中如果有准备会有点帮助,但是也不会特别大。比如排序,可以拿一叠扑克牌来练练排序算法,自己执行一遍,把自己当成小学生操作一下就可以(最后你会发现 quicksort 或者 bucket sort 最快)。这块的抽象能力总是需要提升的,趁学算法的时候没坏处。
当然,大学里学的算法,跟初中高中差异最大的,可能是数据结构——人脑容量有限一般不会记住很多东西然后一样一样地处理,但计算机这方面不太一样,有时候可以先把数据搜集起来(比如弄个数组),再整理成适当的结构(e.g. build a min-heap, 做个小根堆),最后需要的时候再输出需要的东西(最小值)并保持住这个结构,这些确实高中没讲过,但可能也更适合有一定成熟性再学(还有些说起来不难但要靠计算机记住状态的东西,比如并查集,真不适合一般的高中生)。高中学的东西(或者偏数学里的东西),硬要说是算法的话,都是空间 的算法。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有