-
-
Save lancetw/059908b263e1ae20740e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
原文 | |
ループが書けなくなる(或いは再帰依存症)レベル10 | |
http://d.hatena.ne.jp/yuki_neko_nyan/20090217/1234850409 | |
level 0 | |
不會寫遞迴,也沒辦法用遞迴思考。只覺得用迴圈寫就好了。 | |
level 1 | |
開始學習遞迴,但只要一用遞迴思考就覺得煩。有時還會忘了寫終止條件。覺得實在太麻煩了還是想寫迴圈就好。 | |
level 2 | |
開始學習尾遞迴。對於怎麼寫才能做尾遞迴最佳化,或者堆疊狀態的變化等等,完全沒有概念。 | |
level 3 | |
學習將遞迴改寫成尾遞迴。慢慢可以理解兩者之間的差異。 | |
level 4 | |
瞭解高階函數其實就是用遞迴定義出來的,對於這類事變得可以用平常心看待。 | |
level 5 | |
隨手就能寫出遞迴。遇到有迴圈特性的東西,就算用尾遞迴來寫也不覺得痛苦了。 | |
level 6 | |
很直覺地用「迴圈」來稱呼以尾遞迴描述的東西。對這類函式命名時,也自然而然就在名字裡加上 loop 之類的字。看到這類函式時,已經不會再特別意識到是用遞迴寫的。 | |
level 7 | |
for 或 while 的語法變得陌生,在查了文件後總算寫出來了。但為什麼要有這麼麻煩的語法呢?明明用遞迴來寫就好了嘛。只要有遞迴、串列生成與高階函數的話就能解決所有問題了。實在無法容忍想用串列生成時卻只能寫 for 的語言。 | |
level 8 | |
對於充滿一堆具迴圈特性的 API 的語言感到不蘇胡。硬是設計出一些 do、dotimes、或 upto 之類的函式並不會比較好,而且這種語法也記不太起來。想在其他語言中修正自己所寫出的「迴圈」時,一直寫不出迴圈之類的語法覺得很挫折。對於 for 的參數順序也搞不清楚了。 | |
level 9 | |
一看到編譯器會先留意能不能對尾遞迴做最佳化,盡量避免使用不能最佳化的語言。這種編譯器的存在本身就是一種罪惡了,最好可以讓它消失。偶爾看到 for 之類的語法時會覺得很懷念,並感嘆「這種東西也曾經存在過啊」。 | |
level 10 | |
什麼是迴圈? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment