作者kasey ( )
看板java
标题[问题] array 长度
时间Mon Jul 17 14:07:21 2017
大家好,我初学Java没多久,最近遇到一个问题。假设有一个 array 里面的数字不重复
,任意给定一个数字,在不用回圈的情形下要怎麽算此 array 的长度呢?我目前是想到
用 recursion ,可是我写的结果都没有成功 orz,麻烦各位大大解惑
用回圈的程式如下:
int length(int [] s, int x)
int l;
int y = x;
while (true) {
if (s[x] == y) {
return l;
}
x = s[x];
++l;
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 174.62.87.50
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1500271644.A.9D6.html
1F:→ ssccg: array.length? 07/17 14:13
2F:→ ssccg: 你要算的长度到底是什麽东西 07/17 14:15
3F:→ kasey: 就是array.length 但是不能用array.length()也不能用回圈.. 07/17 14:17
4F:→ kasey: . 07/17 14:17
5F:→ ssccg: array的长度跟array的内容有关系? 你这是解题目的话至少完 07/17 14:25
6F:→ ssccg: 整描述题目吧... 不然为什麽不用array.length 07/17 14:26
7F:推 s06i06: 没看懂题目在说什麽 算长度参数传一个x干嘛 07/17 14:29
8F:→ kasey: 测试用的 array s 里的元素是不重复的数字。如果长度是6, 07/17 14:32
9F:→ kasey: 则数字是0~5任意排列。 07/17 14:32
10F:→ ssccg: 所以要求的是array内容的最大值? 另外你说不能用回圈那你的 07/17 14:39
11F:→ ssccg: while是? 07/17 14:39
12F:→ kasey: 要求的是 array 的长度,int x 是一开始先丢一个任意0~5的 07/17 14:43
13F:→ kasey: 数字进去。while 是题目给的示范,但是有另外要求不能用回 07/17 14:43
14F:→ kasey: 圈写 07/17 14:43
15F:→ kasey: 但是函式还是 int length(int [] s, int x),只是内容不能 07/17 14:45
16F:→ kasey: 用回圈 07/17 14:45
17F:→ ssccg: 我觉得题目看起来是求存在array里的circular linked list长 07/17 14:51
18F:→ ssccg: 度,不是array的长度,x代表的是这个list的head pointer 07/17 14:51
19F:→ kasey: 唔... 这麽一说感觉有点像。 07/17 15:07
20F:→ kasey: 那如果从他给的示范改成递回的形式,该怎麽改好呢? 07/17 15:23
21F:→ ssccg: int len(int[] s, int x, int y) { 07/17 15:56
22F:→ ssccg: return s[x] == y ? 1 : 1 + len(s, s[x], y); } 07/17 15:58
23F:→ ssccg: length内容为 return len(s, x, x) 07/17 15:58
24F:→ ssccg: 要跟你的版本一样的话条件成立时要return 0,不过我觉得 1 07/17 16:05
25F:→ ssccg: 的结果才合理,这题目head不会是null所以至少一个node 07/17 16:06
26F:→ kasey: 谢谢。可是有办法用 int len(int[] s, int x) 写吗?我目前 07/18 01:28
27F:→ kasey: 依他的条件找不到好方法存第一个 x 去比较 07/18 01:28
28F:推 Schaos: 你可以在递回前留一份啊,题目没限制变数数量。 07/18 02:01
29F:→ kasey: 变数只能写在length()里,可是都会被update... 不太晓得该 07/18 02:14
30F:→ kasey: 怎麽留 07/18 02:14
31F:→ ssccg: 一定需要的东西想办法塞进参数里,需要记下来的放在local 07/18 10:15
32F:→ ssccg: variable 07/18 10:15
33F:→ ssccg: 其实题目 ONLY AFTER ... 那句是很大的提示了 07/18 10:32