推 xiefengan: Google 快速冪 09/30 12:19
正在看 還在消化中 也許可以避免stack overflow。
→ s90104123: INT_MAX看看? 09/30 16:36
推 yangerma: 你這邊提到了兩種overflow,我還不確定你是不是把兩種搞 09/30 19:25
→ yangerma: 混了。 09/30 19:26
→ yangerma: "stack overflow"就像你說的可能是遞迴過深的關係,至於 09/30 19:26
→ yangerma: 多深叫過深跟runtime的系統設定、還有你的遞迴函數會吃 09/30 19:26
→ yangerma: 多少記憶體有關。至於遞迴為什麼不能過深,跟遞迴在執行 09/30 19:26
→ yangerma: 時是如何做到的有關,不知道的話值得去了解一下。 09/30 19:26
→ yangerma: 另外你提到的跟INT_MAX有關的是整數的overflow,因為C語 09/30 19:26
→ yangerma: 言裡int只能表達某個大小範圍內的整數,如果在拿int運算 09/30 19:26
→ yangerma: 的過程中超過那個範圍,導致運算的結果不如預期。 09/30 19:26
→ yangerma: 以上兩種overflow完全是兩回事,而這份程式碼看起來很可 09/30 19:26
→ yangerma: 能是發生了第一種(stack overflow)。你可以數數看這個程 09/30 19:26
→ yangerma: 式應該會遞迴幾層,以後就會知道這樣的深度是會導致stac 09/30 19:26
→ yangerma: k overflow的。 09/30 19:26
→ yangerma: 至於解決方法,最簡單的就是不要用遞迴ww 09/30 19:26
我這邊純粹在指stack overflow,會提到INT_MAX只是因為leetcode把第二個參數設成
INT_MAX,當然如果最終回傳直>INT_MAX可能也有問題,但目前主要是想先處理
stack overflow。
推 alan23273850: 能用迴圈就不要用遞迴 09/30 19:51
→ WPC001: 你這個為什麼一定要用遞迴? 09/30 22:58
是沒有一定要用遞迴 我一開始也是想用迴圈,但是我想看看別人是怎麼做的
發現該題的討論區通通都是用遞迴,就想說試試看遞迴。
※ 編輯: anoymouse (36.227.161.96 臺灣), 10/02/2020 12:05:12
推 kingofsdtw: 別用recursive看看? recursive考試用而已 10/06 18:31
→ kingofsdtw: 現實上一堆會變成地雷 10/06 18:31