作者kasey ( )
看板java
標題Re: [問題] array 長度
時間Mon Jul 17 15:57:07 2017
目前寫的:
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://webptt.com/m.aspx?n=bbs/java/M.1500278229.A.530.html
3F:→ kasey: 原始碼在上面,麻煩大家幫忙看看... 07/18 00:55
4F:推 Schaos: 你的遞迴不會結束啊...參考前一篇推文吧。 07/18 01:22
5F:推 grezod: 用foreach吧 07/18 08:56
6F:→ ssccg: 當s[x] != x,代入下一輪變比較 s[s[x] 和 s[x] 07/18 09:18
7F:→ ssccg: 依你的題目 a != b -> s[a] != s[b] 所以 s[s[x]] != s[x] 07/18 09:18
8F:→ ssccg: 所以條件永遠不會成立啊,一定要有個東西記下一開始的x 07/18 09:19
9F:→ ssccg: 不然就是要把經過的節點都記下來 07/18 09:19
10F:→ ssccg: 這原始碼很顯這是求list長度,test case或任意shuffle的結 07/18 10:17
11F:→ ssccg: 果都會有list長度 < array長度的情況,是說這是作業嗎 07/18 10:17
12F:→ OSDBNetwork: 為什麼沒有IntUtil的class? 07/18 14:41
13F:→ OSDBNetwork: 為什麼沒有myassert的function? 07/18 14:41
15F:→ OSDBNetwork: 以上沒用 array.length() , 也沒用迴圈 07/18 14:59
16F:→ kasey: 謝謝大家的提示。這算是額外的練習部分 07/19 00:16
17F:推 crazwade: 板上好人真多 推一個 07/19 01:23