中原大學

#請益 遞迴的思考

7月23日 22:29
大家好,小妹目前是剛學程式的新手,最近學到了遞迴,但在寫題目的時候,會沒有辦法想到用遞迴去解題目,就算知道可以用遞迴去解,還是不知道該如下手 想問大家可以不可分享一下是如何將問題拆解成遞迴的寫法呢?或是有什麼淺顯易懂的思考方式可以參考呢? 謝謝大家😉
10
回應 22
文章資訊
Logo
每週有 28 則貼文
共 22 則留言
國立嘉義大學
遞迴不外乎就兩個重點 一是遞迴關係式 二是終止條件 另外遞迴跟迴圈理論上是可以互相轉換的 如果遞迴真解不出來就改用迴圈吧
國立臺中科技大學
遞迴只應天上有,凡人應當用迴圈 這東西只能多去體會(?
國立成功大學
把主問題拆解成 一樣但較小的子問題 直到達成終止條件
國立臺北科技大學
先看資料結構 等學了一些經典用法你自然會慢慢了解
真理大學
這題標準堆疊,或著遞迴
國立臺灣大學
等你熟悉之後 就會變成 乾要怎麼不使用遞迴啊 遞迴在思考上真的簡單很多
國立清華大學
多寫一些遞迴老題目,寫不出來再看別人怎麼寫,久了就有想法了 一開始想不出來很正常
國立臺灣海洋大學
把原問題看成是 好幾個較小但是處理方法相同 範圍不同的子問題 到終止條件的範圍就開始一步一步return回來結果 可以去看看fib數列或是先試試看1-10的級數和 這種比較簡單的問題會了 再慢慢到quicksort或是tree走訪之類的問題 加油
國立臺灣大學
之前聽到有人分享 題目只要問 有幾種方法 就可以用遞迴
國立臺灣科技大學
不會遞迴也沒關係 因為迴圈的效能還是比較好啊 我寫費式數列 面試官還是會要求用疊代來寫
世新大學
妳電腦假如是Mac 可以下載swift playground 的遊戲 我是靠這個學起來遞迴的 他可以像一般ide集成開發環境一樣 逐一執行程式碼 或是妳用逐一執行或許就能看懂了
國立勤益科技大學
說真的我也不知道怎麼解釋 多寫幾次就會了
國立臺灣大學
剛開始死命找題目練習 久了就熟悉習慣了
國立中央大學 資訊工程碩士班
不過說實話 寫應用層寫這麼多年 從來沒真正實現過遞迴…
明新科技大學
有寫過幾次,不過幾乎都是用在軟體設計上使用 韌體使用上,除非能確定記憶體使用量 要不然幾乎都不會用遞迴的方式去寫 之前做過一個專案是要記錄使用者最後物件的控制狀態 因為版本更新,有時候會多增加一些物件 為了避免日後維護太過繁瑣,所以就用遞迴去做 把讀到的物件名稱和當下的狀態記錄下來 大概的思考方式就是 把整個Form丟進去Func Func先去檢查丟進去的物件裡面有沒有子物件 有子物件的話這個物件就不是一個控制物件而是一個Group 所以再把掃到的這個子物件丟到Func裡面 如果他是物件則把他的Name和內容寫到文件裡面記錄下來然後Return 遞迴幾乎都是這樣的概念,將大物件切碎,想想小物件要怎樣處理 如果切碎的內容還是一個大物件,則將這個大物件再丟回這個Func處理 遞迴其實沒有說一定要透過Return把所有的資料包含在內 適當的使用全域變數去紀錄值也是可行的 只是學校的教法都比較死一點 在實務上,有時候真的遞迴要回傳的內容太多 反而導致Func需要夾帶的參數一直增加 整體使用上反而會更麻煩
國立交通大學
幾年前寫的文直接丟過來 怎樣遞迴:先用中文寫程式 想出一句話可以描述或直接解決問題, 並用中文表示 ,這句話通常很直觀甚至就是問題本身。 把一個這個問題的解倒推一兩步 ( 此時問題會呈現某種解到一半的狀態 )。 然後試著用第 1. 步得到的 「行為」來描述 2.觀察到的狀態。 當前面幾步都完成了,請讓你的程式合理的停下來。 舉個最簡單的實例: 如何用遞迴做 ( 1+2+…+n ) 用中文設計一個一口氣解決問題的動作,在這裡是:「從1加到某數n的合 」 。 把問題倒推一步:本來我們要求 ( 1+2+…+n ), 退一步即是 (1+2+…+ ( n - 1 )) + n。 用 1. 得到的「動作」描述 2. 得到的狀態:「從1加到某數n-1的合 」+ n 。 讓他停下來:當「從1加到某數1」的時候答案為 1。 到這裡基本已經完成這隻程式了,我們只需要把他轉換成意義上的程式。 「從1加到某數n的合 」以函數表示:summation ( 1, n ) 根據 2. 3. :summation ( 1, n ) = summation ( 1, n - 1 ) + n 根據 4. : summation ( 1, n ) = if n is 1 then return 1 else return summation ( 1, n - 1 ) + n done.
國立臺灣大學
遞迴比迴圈好想多了吧= = 只是太耗資源了 基本上除了拿來解考題 工作上都不太能用 誰知道call下去會不會stack overflow
國立臺灣師範大學 資訊工程學系
B11 用 playground 玩遞迴要太潮 如果我當年知道這個就不會過的那麼苦了 (?
銘傳大學
工作實務上比較常遇到要用到遞迴的情境是 呼叫API時好時壞,因此要重複給他再Retry幾次才會可以呼叫成功做後續處理。 這時不知到迴圈到底要設置跑幾圈就可以用遞迴,只要一發生exception就再重新call自己這個function一次,我覺得遞迴在實務上也滿常遇到的,以前在學校解題以為遞迴只能夠用再盒內塔跟費氏數列等題目情境。 當你不曉得到底要重複跌代幾次的時候就可以考慮遞迴
國立臺灣大學
B19 你這個用while(1)跟break就可以了吧 或是api本身有return error code 而且蠻多環境不可能給你無限塞stack 像embedded system的stack用起來都很斤斤計較 你要開個長度稍長的array搞不好都還有問題
國立臺灣科技大學
B20 是設 int cnt=0; 然後跑一次就cnt++來設定迴圈次數嗎?
國立臺灣師範大學
遞迴的話,你可以去學二元樹,多去嘗試用遞迴遍歷二元樹之後,你會發現其實遞迴的狀態很多都能被畫成樹的形式呈現。多畫幾次圖模擬跑跑看就懂了