算法

2023-03-20 15:59 更新

當你編寫一個針對一類問題的通用解法,而非針對某一個問題的特定解法時,你就寫出了一個算法。我在第一章提到過這個詞,但是沒有給出詳細定義。這也不太好定義,所以我會試用多種方式進行定義。

首先,考慮一些不是算法的問題。當你學習個位數(shù)乘法時,你可能會背乘法表。實際上你記住的是100個特定解法,這種知識并不是真正意義的算法。

但是,如果你很“懶”,你可能學習一些作弊技巧。比如,求n與9的乘積,你可以在第一位上寫n-1,第二位上寫10-n。這一技巧是9與任意個位數(shù)相乘的通用解法。這就是一個算法了!

類似地,你學過的進位加法、借位減法、長除法等等這些技術都是算法。算法的特點之一是執(zhí)行時無需任何智能性。算法是機械過程,按照一組簡單的規(guī)則,一步接一步的執(zhí)行。

我認為,人們花那么多時間在學校學習死板的執(zhí)行算法,無需任何智慧,這實在令人尷尬。

另一方面,算法的設計過程是有趣的,挑戰(zhàn)智慧,這才是所謂的編程的核心部分。

一些人們在自然而然狀態(tài)下做的事情,沒有任何難度或下意識地思考,但這才是最難用算法表達的事情。自然語言理解就是很好的例子。我們都在做這件事,但迄今為止沒人能解釋該怎么做,至少不能以算法的形式給出解釋。

稍后在本書中我將有機會針對許多問題設計簡單的算法。如果你選修了計算機科學專業(yè)的下一門課數(shù)據(jù)結構,你將看到計算機科學所帶來的一些最有趣、最聰明、最有用的算法。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號