Re: [問題] array 長度

看板java作者 ( )時間8年前 (2017/07/17 15:57), 編輯推噓3(3014)
留言17則, 6人參與, 最新討論串2/2 (看更多)
目前寫的: 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

07/17 19:26, , 1F
https://pastebin.com/ 可不可以把完整原始碼貼出來?
07/17 19:26, 1F

07/18 00:29, , 2F

07/18 00:55, , 3F
原始碼在上面,麻煩大家幫忙看看...
07/18 00:55, 3F

07/18 01:22, , 4F
你的遞迴不會結束啊...參考前一篇推文吧。
07/18 01:22, 4F

07/18 08:56, , 5F
用foreach吧
07/18 08:56, 5F

07/18 09:18, , 6F
當s[x] != x,代入下一輪變比較 s[s[x] 和 s[x]
07/18 09:18, 6F

07/18 09:18, , 7F
依你的題目 a != b -> s[a] != s[b] 所以 s[s[x]] != s[x]
07/18 09:18, 7F

07/18 09:19, , 8F
所以條件永遠不會成立啊,一定要有個東西記下一開始的x
07/18 09:19, 8F

07/18 09:19, , 9F
不然就是要把經過的節點都記下來
07/18 09:19, 9F

07/18 10:17, , 10F
這原始碼很顯這是求list長度,test case或任意shuffle的結
07/18 10:17, 10F

07/18 10:17, , 11F
果都會有list長度 < array長度的情況,是說這是作業嗎
07/18 10:17, 11F

07/18 14:41, , 12F
為什麼沒有IntUtil的class?
07/18 14:41, 12F

07/18 14:41, , 13F
為什麼沒有myassert的function?
07/18 14:41, 13F

07/18 14:54, , 14F
https://pastebin.com/PWPNEgTc 用正規作弊一下 XD
07/18 14:54, 14F

07/18 14:59, , 15F
以上沒用 array.length() , 也沒用迴圈
07/18 14:59, 15F

07/19 00:16, , 16F
謝謝大家的提示。這算是額外的練習部分
07/19 00:16, 16F

07/19 01:23, , 17F
板上好人真多 推一個
07/19 01:23, 17F
文章代碼(AID): #1PR6tLKm (java)
討論串 (同標題文章)
文章代碼(AID): #1PR6tLKm (java)