之前在買書的時候湊單的時候買了一本《程序員的數學》,希望能夠提升一下自己解決問題的能力,數學應該是最鍛煉腦力的學科了。但是當我興沖沖的去翻閱這本書的時候,展現在我面前的內容不是很符合我的要求~一句話,知識太過於基礎。
我覺得這本書面向的讀者更適合那些剛接觸程序員的人,這樣可以從數學的角度把他們帶入程序的世界,這樣就有不同的思考方式,能夠激起更多的興趣在程序的世界中走的更遠,總的來說是一本非常不錯的“數學書”,因為它不是那么晦澀難懂,沒有啃不動的定理和公式,這樣可以使得你更專注於它傳達的知識。
保持求知欲是提升解決問題能力的源泉。
主要內容:
”0“--做出簡單規則 , 很多的情況下引入0只是讓規則更加容易的描述。如果能夠擁有一致性的簡單的規則,就更加的便於計算機進行處理。例如按位計數法中的0次冪為1的規則引入。
”邏輯“--兩個世界 , 邏輯消除歧義的工具,表述更加嚴格,具有完備性和排他性。關於邏輯的工具有邏輯表達式,真值表,文氏圖,卡諾圖,其中卡諾圖非常適合用來化簡復雜邏輯表達式。
”余數“--分組 , 如果碰到一個復雜的問題,可以首先進行逐個計算,是否能夠發現周期性的循環規律,如果可以則可以利用余數的方法縮減問題的規模,復雜問題就得到了簡化。
”數學歸納法“--通過2個步驟挑戰無窮 , 數據歸納法在程序正確性驗證中的一個應用就是循環不變式。
”排列組合“--關鍵在於認清問題的性質 , 排列,組合,置換等概念。
”遞歸“--在自己中找出自己 , 遞歸也是分解,降級問題的一個方法,一個問題必須包含相同結構的小規模問題才是正確的遞歸結構,一定是相同結構的子問題。
”指數爆炸” , 指數的增長非常的恐怖,但是指數的下降也可以應用到程序設計中加快程序運行時間,如二分查找。
“不可解問題”--展示了原理上的界限
解決問題的能力非常重要,無論數學還是程序應用,解答思考題時,可以首先利用較小的規模試算的方法,發現規律,性質,結構,循環,一致性等。認清隱含在問題中的模式。另外抽象化也是解決問題中重要的概念,只有同樣能夠運用於其他類似問題的方法,才能夠稱為解法。