精華區beta C_and_CPP 關於我們 聯絡資訊
各位大大高手好~ 小弟最近在練習寫code的時候, 雖然題目被我解出來了, 但通常我會習慣看別人遇到這題會怎麼寫, 有時看別人會用遞迴的方式來解答。 我想請問各位大大, 到底甚麼情況下會讓你想到要遞迴的方式去解? 是單純經驗的累積嗎? 因為我覺得要第一時間想到用遞迴解老實說還滿困難的... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.132.117 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1515777683.A.32B.html
steve1012: 通常是可以拆成一樣的小問題的時候 多刷幾題就會了 01/13 01:34
stupid0319: 遞迴能不要用就不要用吧,弄不好stack還會爆表 01/13 01:52
freeunixer: #1Q77bKVx (Gossiping) 01/13 03:01
CoNsTaR: C/C++幾乎不用遞迴,只有作業一定得用而已吧 01/13 03:52
b0920075: divide and conquer? 01/13 04:15
liflguy: 順便問一下,dfs有遞迴外的方法嗎? 01/13 04:28
loveflames: constexpr函數會需要遞迴 01/13 08:07
Sidney0503: 棣回和迴圈等價 而且已經做成compiler了 01/13 08:53
Sidney0503: 優化開下去就幫你把遞迴轉成迴圈 01/13 08:53
Sidney0503: 其實就是上面問學資料結構那一篇的推文有說 01/13 08:54
Sidney0503: 習慣電腦的想法比較重要 01/13 08:56
Sidney0503: 遞迴的思維就是數學上的遞迴 每次透過迭代算下一輪 01/13 08:58
Sidney0503: 用迴圈是從i小往i大走 遞迴是從i大一路叫i小的執行 01/13 08:59
Sidney0503: 至於你是真的想練遞迴想法的話 可以把現有的遞迴code 01/13 09:00
Sidney0503: 改寫成tail recursion 這種練習也可以試看看 01/13 09:01
Sidney0503: 或者是直接是玩玩看functional language例如lisp或 01/13 09:03
Sidney0503: haskell 01/13 09:03
Sidney0503: 然後等一下就會有人說c/c++版要推c/c++語言 01/13 09:05
springman: 會用遞迴通常都只有一個原因,問題本身可以用遞迴方式 01/13 09:24
springman: 定義,因此用遞迴來解可能比較簡單、程式碼可能比較短 01/13 09:25
springman: 當然,遞迴程式執行速度照理說是不可能比較快。 01/13 09:25
springman: 任何遞迴程式都可以寫成非遞迴的型式,理論上用堆疊都 01/13 09:26
springman: 可以做得到,只是有可能很麻煩。 01/13 09:26
Ommm5566: 樓上 遞迴本來就是stack 何來困難? 01/13 10:12
springman: 因為想到遞迴函數裡面再加幾個迴圈,可以寫得很複雜, 01/13 10:15
springman: 改寫成非遞迴還是可能很麻煩。 01/13 10:16
popcool: 遞迴用不好stack不是很容易就爆掉嗎 01/13 13:54
y3k: 不知道有沒有遞迴特化的程式語言 沒有for這樣XD 01/13 14:22
andyjy12: 處理XML,JSON 這類深度不固定的nest資料 01/13 17:07
andyjy12: 或是在寫interpreter 01/13 17:09
loveflames: C++的TMP算吧 01/13 17:50
cia1099: 把recursive想成while迴圈就很容易實現了吧 01/13 19:04
springman: functional language 強調的是沒有 assignment 01/13 19:27
springman: 幾乎都靠遞迴。 01/13 19:27
qazkevin: 感謝各位大大的回覆~小弟會繼續努力練功的! 01/13 23:52
F04E: 探訪樹的節點的時候? 01/15 06:55
longlongint: 程式掛掉造成的代價不大的時候 01/15 23:44
cphe: 寫作業比較常用到…還有刷leetcode~ 其實用在tree的操作蠻 01/16 09:56
cphe: 方便,會用的話寫起來code很簡潔~ 但不確定性太大了,怕會爆 01/16 09:57
cphe: 當大問題可以拆成同樣規則的小size去做時就可以用 01/16 09:59
TWkobe: Dfs非遞迴可用stack 沽狗一下有喔 不過 01/16 18:55
TWkobe: 遞迴與stack本身就一體兩面 01/16 18:55
rareone: 可以寫的很functional 01/16 20:25