Re: [問題] array 長度

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

Links booklink

Contact Us: admin [ a t ] ucptt.com