【问题标题】:Finding the length of an array recursively in Java在Java中递归查找数组的长度
【发布时间】:2022-01-10 14:48:31
【问题描述】:

我正在尝试创建一个递归返回数组长度的方法(作为学习练习)。我尝试传入一个长度为 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;
    }

【问题讨论】:

  • findArrayLength(i, length, array); -> return findArrayLength(i, length, array);
  • 哇,成功了。但是,为什么我的代码完全不起作用?
  • 因为您递归调用该方法但丢弃结果并返回第一个length,即1

标签: java recursion


【解决方案1】:

您没有使用递归调用的结果,您也可以将增量替换为递归调用中的+1ilength 也这样做,只保留一个

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

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 2021-11-20
    • 2022-06-23
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多