1700414751
计算机是怎样跑起来的 5.3 要点2:计算机不靠直觉而是机械地解决问题
1700414752
1700414753
计算不能自发地思考。因此计算机所执行的由程序表示的算法必须是由机械的步骤所构成。所谓“机械的步骤“就是不用动任何脑筋,只要按照这个步骤做就一定能完成的意思。众多的学者和前辈程序员们已经发明创造了很多机械地解决问题的步骤,这些步骤并不依赖人类的判断,由此构成的算法被称为”典型算法“
1700414754
1700414755
辗转相除法(又称欧几里德算法)就是一个机械地求解最大公约数问题的算法,在辗转相除法中分为使用除法运算和使用减法运算两种方法。使用减法运算简单易懂,步骤如图5.2所示。
1700414756
1700414757
图5.2 根据辗转相除法求解最大公约数的方法
1700414758
1700414759
1700414760
1700414761
1700414762
用两个数中较大的数减去较小的数(步骤),反复进行上述步骤,直到两个数的值相等(步骤的终止)。如果最终这两个数相同,那么这个数就是最大公约数。请注意以下三点:(1)步骤是明确的、完全不依赖直觉的;(2)步骤是机械的、不需要动脑筋就能完成的;(3)使步骤终止的原因是明确的
1700414763
1700414764
使用辗转相除法求解12和42的最大公约数的程序代码如代码清单5.1所示。本章展示的程序都是用VBScript编写的。只要把代码清单5.1中的内容输入文本编辑器,保存成扩展名为.vbs的文件,双击这个文件,程序就可以运行了(如图5.3所示)。即使读不懂这段程序代码的内容也没有关系。这里需要注意的是该算法和所描述的步骤是可以直接转换成程序的。
1700414765
1700414766
代码清单5.1 求解12和42最大公约数的程序
1700414767
1700414768
a=12
1700414769
1700414770
b=42
1700414771
1700414772
while a<>b
1700414773
1700414774
If a>b Then
1700414775
1700414776
a=a-b
1700414777
1700414778
Else
1700414779
1700414780
b=b-a
1700414781
1700414782
End If
1700414783
1700414784
Wend
1700414785
1700414786
MsgBox “最大公约数为”&CStr(b)&“。”
1700414787
1700414788
图5.3 代码清单5.1的运行结果
1700414789
1700414790
1700414791
1700414792
1700414793
1700414794
1700414795
1700414797
计算机是怎样跑起来的 5.4 要点3:了解并应用典型算法
1700414798
1700414799
建议从事编程工作的人手中要有一本能作为算法辞典的书(可以作为算法辞典使用的书有《算法技术手册》(George T. Heineman、Gary Pollice、Stanley Sellkow)、《算法精解:C语言描述》(Kyle Loudon)等)。虽然算法应该由自己思考,但如果遇到了不知道从哪里下手才好的问题,也可以利用这类辞典查查已经发明发来的算法
[
上一页 ]
[ :1.70041475e+09 ]
[
下一页 ]