[英]Finding the length of an array recursively in Java
我正在尝试创建一种递归返回数组长度的方法(作为学习练习)。 我尝试传入一个长度为 4 的数组,但该方法只返回 1。我还尝试在 if 语句之外调用递归方法,这只会给出 StackOverflowError。 为什么这个方法返回一个,我怎样才能让它返回正确的长度?
public static int findArrayLength(int i, int length, int[] array) {
if(i < array.length) {
length += 1;
i++;
findArrayLength(i, length, array);
}
return length;
}
您没有使用递归调用的结果,也可以将增量替换为递归调用中的+1
,并且i
和length
执行相同的操作,只保留一个
public static int findArrayLength(int i, int[] array) {
if (i < array.length) {
return findArrayLength(i + 1, array);
}
return i;
}
System.out.println(findArrayLength(0, new int[]{1, 1, 1})); // 3
System.out.println(findArrayLength(0, new int[]{1, 1, 1, 1})); // 4
System.out.println(findArrayLength(0, new int[]{1, 1, 1, 1, 1})); // 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.