作者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/cn.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