[問題] 關於遞迴的使用時機

作者: qazkevin (Linus)   2018-01-13 01:21:21
各位大大高手好~
小弟最近在練習寫code的時候,
雖然題目被我解出來了,
但通常我會習慣看別人遇到這題會怎麼寫,
有時看別人會用遞迴的方式來解答。
我想請問各位大大,
到底甚麼情況下會讓你想到要遞迴的方式去解?
是單純經驗的累積嗎?
因為我覺得要第一時間想到用遞迴解老實說還滿困難的...
作者: steve1012 (steve)   2018-01-13 01:34:00
通常是可以拆成一樣的小問題的時候 多刷幾題就會了
作者: stupid0319 (徵女友)   2018-01-13 01:52:00
遞迴能不要用就不要用吧,弄不好stack還會爆表
作者: freeunixer (御劍客)   2018-01-13 03:01:00
作者: CoNsTaR ((const *))   2018-01-13 03:52:00
C/C++幾乎不用遞迴,只有作業一定得用而已吧
作者: b0920075 (Void)   2018-01-13 04:15:00
divide and conquer?
作者: liflguy (xxxwino)   2018-01-13 04:28:00
順便問一下,dfs有遞迴外的方法嗎?
作者: loveflames (咕啾咕啾魔法陣)   2018-01-13 08:07:00
constexpr函數會需要遞迴
作者: Sidney0503 (Sidney0503)   2018-01-13 08:53:00
棣回和迴圈等價 而且已經做成compiler了優化開下去就幫你把遞迴轉成迴圈其實就是上面問學資料結構那一篇的推文有說習慣電腦的想法比較重要遞迴的思維就是數學上的遞迴 每次透過迭代算下一輪用迴圈是從i小往i大走 遞迴是從i大一路叫i小的執行至於你是真的想練遞迴想法的話 可以把現有的遞迴code改寫成tail recursion 這種練習也可以試看看或者是直接是玩玩看functional language例如lisp或haskell然後等一下就會有人說c/c++版要推c/c++語言
作者: springman (司布林)   2018-01-13 09:24:00
會用遞迴通常都只有一個原因,問題本身可以用遞迴方式定義,因此用遞迴來解可能比較簡單、程式碼可能比較短當然,遞迴程式執行速度照理說是不可能比較快。任何遞迴程式都可以寫成非遞迴的型式,理論上用堆疊都可以做得到,只是有可能很麻煩。
作者: Ommm5566 (56天團)   2018-01-13 10:12:00
樓上 遞迴本來就是stack 何來困難?
作者: springman (司布林)   2018-01-13 10:15:00
因為想到遞迴函數裡面再加幾個迴圈,可以寫得很複雜,改寫成非遞迴還是可能很麻煩。
作者: popcool (我不懂)   2018-01-13 13:54:00
遞迴用不好stack不是很容易就爆掉嗎
作者: y3k (激流を制するは静水)   2018-01-13 14:22:00
不知道有沒有遞迴特化的程式語言 沒有for這樣XD
作者: andyjy12 (??)   2018-01-13 17:07:00
處理XML,JSON 這類深度不固定的nest資料或是在寫interpreter
作者: loveflames (咕啾咕啾魔法陣)   2018-01-13 17:50:00
C++的TMP算吧
作者: cia1099 (阿兜啊)   2018-01-13 19:04:00
把recursive想成while迴圈就很容易實現了吧
作者: springman (司布林)   2018-01-13 19:27:00
functional language 強調的是沒有 assignment幾乎都靠遞迴。
作者: qazkevin (Linus)   2018-01-13 23:52:00
感謝各位大大的回覆~小弟會繼續努力練功的!
作者: F04E (Fujitsu)   2018-01-15 06:55:00
探訪樹的節點的時候?
作者: longlongint (華哥爾)   2018-01-15 23:44:00
程式掛掉造成的代價不大的時候
作者: cphe (魔鬼藏在垃圾筒裡)   2018-01-16 09:56:00
寫作業比較常用到…還有刷leetcode~ 其實用在tree的操作蠻方便,會用的話寫起來code很簡潔~ 但不確定性太大了,怕會爆當大問題可以拆成同樣規則的小size去做時就可以用
作者: TWkobe (中華柯比)   2018-01-16 18:55:00
Dfs非遞迴可用stack 沽狗一下有喔 不過遞迴與stack本身就一體兩面
作者: rareone (拍玄)   2018-01-16 20:25:00
可以寫的很functional

Links booklink

Contact Us: admin [ a t ] ucptt.com