看板 C_Sharp 關於我們 聯絡資訊
今天看書在測試一個fuction public test(int i) { if(i>10) { i--; test(i); } } 使用 test(50); 呼叫時沒問題 使用 test(9999); 會彈出 stackoverflow exception 想請問是甚麼會造成這樣的原因? 我若用 for迴圈則沒這個問題 for(int i=9999; i>10 ; i--) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.35.164.7 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1423471694.A.48D.html
wenyonba: 因為test(9999)遞迴的次數太多,用光了stack的記憶體 02/09 16:51
les5277: 來試試 不同電腦應該會有不同的反應 02/09 20:24
TobyH4cker: 一樓正解 02/09 22:31
TobyH4cker: 每一次遞迴就多一層stack frame,如果能的話盡量用第 02/09 22:33
TobyH4cker: 二種方法 02/09 22:33
wenyonba: 不同電腦會不會有不同反應在C#我就沒去看,不過以前C++, 02/09 22:39
wenyonba: stack大小是編譯的時候指定,跟電腦無關 02/09 22:39
wenyonba: 剛剛查了一下C#也是一樣,不指定的話預設1MB 02/09 22:44
VVll: 你要先弄懂 遞迴的資源管理 02/10 01:44
zg0608x: 看標題還以為在問知名網站 02/16 17:38