W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
當你編寫一個針對一類問題的通用解法,而非針對某一個問題的特定解法時,你就寫出了一個算法。我在第一章提到過這個詞,但是沒有給出詳細定義。這也不太好定義,所以我會試用多種方式進行定義。
首先,考慮一些不是算法的問題。當你學習個位數(shù)乘法時,你可能會背乘法表。實際上你記住的是100個特定解法,這種知識并不是真正意義的算法。
但是,如果你很“懶”,你可能學習一些作弊技巧。比如,求n與9的乘積,你可以在第一位上寫n-1,第二位上寫10-n。這一技巧是9與任意個位數(shù)相乘的通用解法。這就是一個算法了!
類似地,你學過的進位加法、借位減法、長除法等等這些技術(shù)都是算法。算法的特點之一是執(zhí)行時無需任何智能性。算法是機械過程,按照一組簡單的規(guī)則,一步接一步的執(zhí)行。
我認為,人們花那么多時間在學校學習死板的執(zhí)行算法,無需任何智慧,這實在令人尷尬。
另一方面,算法的設計過程是有趣的,挑戰(zhàn)智慧,這才是所謂的編程的核心部分。
一些人們在自然而然狀態(tài)下做的事情,沒有任何難度或下意識地思考,但這才是最難用算法表達的事情。自然語言理解就是很好的例子。我們都在做這件事,但迄今為止沒人能解釋該怎么做,至少不能以算法的形式給出解釋。
稍后在本書中我將有機會針對許多問題設計簡單的算法。如果你選修了計算機科學專業(yè)的下一門課數(shù)據(jù)結(jié)構(gòu),你將看到計算機科學所帶來的一些最有趣、最聰明、最有用的算法。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: