首先朗若,關(guān)注原始出處。
算法書里常常直接把算法列出來满葛,然后把直指目標(biāo)的東西羅列出來,于是程序員們就迷失在了一大堆“定義”“定理”“引用”之中罢屈,這時候就需要一個“回溯”的過程嘀韧,找出每一個步驟的由來,為何選擇了這個定理而不是別的缠捌?
一言以蔽之锄贷,關(guān)注原始出處。
我們在日常生活里也一樣需要關(guān)注出處曼月,沒有算法書參考谊却,我們應(yīng)該怎么做呢?
很簡單十嘿,多問自己為什么因惭。例如,為什么這樣做是對的绩衷,而那樣做是錯的蹦魔?為什么這種解決方法是最優(yōu)的?還有更好的解決辦法嗎咳燕?怎么證明勿决?每個問題就能將你的思維拉回到問題實質(zhì)本身,從原點思考問題招盲。
其次低缩,關(guān)注推導(dǎo)思路而不是最終結(jié)果。
就學(xué)習(xí)編程而言曹货,算法只是一堆離散的機(jī)械步驟咆繁,缺少背后的思想支撐,這些步驟就沒有一個本質(zhì)層面上的關(guān)聯(lián)顶籽。但如果知道了算法是如何一步步推導(dǎo)出來的(尤其是那些有關(guān)本質(zhì)的步驟)玩般,我們就一下子擁有了大量的記憶提取線索,對其中任何一步的回憶都能讓我們自己動手解決剩下的內(nèi)容礼饱。
這在其它領(lǐng)域的學(xué)習(xí)中同樣適用坏为,制造屬于自己的記憶提取線索,對于融會貫通地掌握知識非常重要镊绪。當(dāng)掌握了背后的思想匀伏,有時只需要記住一個算法,就能解決所有的問題蝴韭。
最后够颠,重在分析推理而不是聯(lián)想。
聯(lián)想是強(qiáng)大的思維捷徑榄鉴,在任何時候都會搶占大腦的工作記憶摧找。比如程序員在被問到“如何尋找區(qū)間最大值”時核行,最先進(jìn)入他意識的一定是學(xué)過的某個算法,或是某個迷惑性的技巧蹬耘。一旦開始這樣的聯(lián)想芝雪,就很容易讓思考停留在問題的表層。聯(lián)想有時也讓你距離問題本身越來越遠(yuǎn)综苔,而其實可能不用繞這么多彎惩系。