推 lwecloud: 把變數a,b傳進去;包成class用member variable09/25 10:11
願聞其詳
※ 編輯: amamoimi (112.78.66.70 臺灣), 09/25/2023 12:09:27
推 lc85301: 你可以想 x 就是一個你可以設定的東西09/25 13:16
→ lc85301: 所以你可以把 f 改成 f(int x, int a, int b)09/25 13:16
→ lc85301: 但這樣太長了,可以包 strcut 當參數來傳09/25 13:17
→ amamoimi: 所以還是得設多變數才行囉?09/25 17:08
推 wulouise: 你要render河內塔的圖案還是想做什麼? context比較重要09/25 18:21
推 sarafciel: n只代表搬動的盤子數而已,你想縮減到剩下n,那就會los09/25 22:00
→ sarafciel: e掉哪裡搬到哪裡的資訊,自然就變成解不出來河內塔了09/25 22:00
→ amamoimi: 我想說如果能在函數裡定義a柱b柱c柱,每次盤子增加時呼09/26 08:16
→ amamoimi: 叫f(x-1)能直接讓f(x-1)的b柱跟c柱調換這樣感覺寫起來09/26 08:16
→ amamoimi: 比較直觀09/26 08:16
→ amamoimi: 不過這也只是我初步想法~確切要怎麼寫我也還沒有頭緒09/26 08:17
推 LPH66: 最簡單的就是告訴函數"你的a柱是誰,b柱是誰,c柱是誰"09/26 15:34
→ LPH66: 而這就只是簡單地把參數傳進去而已09/26 15:35
→ LPH66: 遞迴的時候會出現"我的a柱是子問題的b柱"這種事情09/26 15:35
→ LPH66: 那就直接將告訴我是a柱的東西傳給子問題的b柱就好09/26 15:36
→ LPH66: (基本上就是二樓提的,要不要包struct隨你)09/26 15:36
了解!
→ xanxus27: 感覺 如果不是f(int x, int a, int b)的話09/26 16:07
→ xanxus27: 有一些思路09/26 16:07
→ xanxus27: x用2位數 4位數來表示 ex. x = a*10 + b 個位數是b09/26 16:17
→ xanxus27: 十位數是a 這樣只要適當用/跟%應該也能操控09/26 16:17
→ xanxus27: 直接用陣列 x = [a, b, x]09/26 16:18
請問用陣列的話要怎麼寫好呢
※ 編輯: amamoimi (112.78.66.70 臺灣), 09/26/2023 17:23:19
推 wulouise: 每根都是std::stack然後 void(stack& from, stack& to)09/26 22:10
→ wulouise: 這樣就夠了吧?09/26 22:10
→ wulouise: 不過stack要看內容比較麻煩,你可以用vector的push_back09/26 22:11
→ wulouise: pop_back就好09/26 22:11
→ amamoimi: 我是希望函數可以只用「總共幾個幾個盤子」當變數這樣0
9/27 21:42
※ 編輯: amamoimi (1.200.27.202 臺灣), 09/27/2023 21:43:20
→ amamoimi: 畢竟河內塔就是只要你指定盤子的數目,所有的步驟都是決09/27 21:48
→ amamoimi: 定好的呀~09/27 21:48
→ amamoimi: ...好吧xd我被你說服了 謝謝~09/29 07:42
※ 編輯: amamoimi (1.200.3.16 臺灣), 09/29/2023 07:44:16
※ 編輯: amamoimi (1.200.3.16 臺灣), 09/29/2023 07:45:01
推 closer76: 當你使用遞迴時,要思考的應該是「如何把所有會變動的資 09/30 10:59
→ closer76: 料都用參數傳遞」,而非「使用靜態/全域變數減少參數」 09/30 11:00
→ closer76: 遞迴有一點像是讓電腦幫你計算函式要呼叫幾次、順序為何 09/30 11:03
→ closer76: 這個函式應該要盡可能是「純函數」,才能保證執行結果 09/30 11:04
→ amamoimi: 了解 謝謝前輩! 10/02 10:13