作者:
newup (希望有個放縱的夜晚)
2017-12-24 17:09:06現在好像很流行 函數式編程
好像就是用很多遞迴的寫法
可是遞迴不是會降低效能嗎?
本學店的老師 有做過類似的講座
https://www.youtube.com/watch?v=PQrVVPNA98I&t=1526s
可是我看完
我還是不懂 使用遞迴的好處在哪裡
重點是只有好debug嗎?
作者: zzzz8931 (肥宅) 2016-12-24 17:09:00
116 問 jserv
作者:
SupCat (空空)
2017-12-24 17:12:00遞迴結構簡單 邏輯也清楚
講出速度超慢這就更好笑了,就push+jmp 是能有多慢真正的問題是stack有限
stack是local memory,通常都在cache裡...如果要把資料丟進queue可以back track,都是一樣慢的用recursive function並不會比較慢通常不用遞迴解法就是開個queue 然後用switch模擬遞迴但是從組語看是作一樣的事只要語言支援expendable stack就不會有這問題C/C++是沒救了因為function call的架構是寫死的
tail recursion在compiler優化後跟loop效能是一樣的
作者:
hijkxyzuw (i,j,k) ×(x,y,z)
2017-12-24 17:25:00可以消除物件的狀態。函數式優雅、質樸,沒有多餘的部份。函數式語言中沒有冗餘的成份
我覺得函數式語言麻煩的地方是有些計算本來就有狀態概念例如Graph traversal要記錄哪些點已經走過了
作者:
hijkxyzuw (i,j,k) ×(x,y,z)
2017-12-24 17:29:00那就只能用 tail recurtion 把狀態傳下去lol例如 C 語言有 if while return and or 關鍵字,但事實上只需要用遞迴就能實現 while ,用形參實參就能實現 scope ,甚至物件也能用函數實現。也就是程式語也就是程式語言中大多功能都是多餘的,只有函數是必要
作者: zzzz8931 (肥宅) 2017-12-24 17:35:00
樓下 116 幫原 PO 問 jserv