看板 java 關於我們 聯絡資訊
目前寫的: int length(int []s, int x) { if (s[x] == x) { return 0; } return length(s, s[x]) + 1; } 可是會 StackOverflowError 試著印出結果發現s[x]跑一遍array後一直再重複所以不會停止... 我該怎麼改呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 174.62.87.50 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1500278229.A.530.html
OSDBNetwork: https://pastebin.com/ 可不可以把完整原始碼貼出來? 07/17 19:26
kasey: https://pastebin.com/T5F7vMjd 07/18 00:29
kasey: 原始碼在上面,麻煩大家幫忙看看... 07/18 00:55
Schaos: 你的遞迴不會結束啊...參考前一篇推文吧。 07/18 01:22
grezod: 用foreach吧 07/18 08:56
ssccg: 當s[x] != x,代入下一輪變比較 s[s[x] 和 s[x] 07/18 09:18
ssccg: 依你的題目 a != b -> s[a] != s[b] 所以 s[s[x]] != s[x] 07/18 09:18
ssccg: 所以條件永遠不會成立啊,一定要有個東西記下一開始的x 07/18 09:19
ssccg: 不然就是要把經過的節點都記下來 07/18 09:19
ssccg: 這原始碼很顯這是求list長度,test case或任意shuffle的結 07/18 10:17
ssccg: 果都會有list長度 < array長度的情況,是說這是作業嗎 07/18 10:17
OSDBNetwork: 為什麼沒有IntUtil的class? 07/18 14:41
OSDBNetwork: 為什麼沒有myassert的function? 07/18 14:41
OSDBNetwork: https://pastebin.com/PWPNEgTc 用正規作弊一下 XD 07/18 14:54
OSDBNetwork: 以上沒用 array.length() , 也沒用迴圈 07/18 14:59
kasey: 謝謝大家的提示。這算是額外的練習部分 07/19 00:16
crazwade: 板上好人真多 推一個 07/19 01:23