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