繁体   English   中英

使用递归查找数组的最大值

[英]Finding Max of an array using Recursion

因此,使用for循环或while循环查找数组的最大值非常简单,但我想通过递归进行尝试。 由于某种原因,子字符串不起作用-它说“找不到符号”。 为什么是这样? 我的策略是继续细分并比较这两个方面,直到只剩下一个应该是最大数量为止。...我做对了吗? 谢谢

   public static int max(int[] array) {

    if (array.length == 1) {
        return array[0];
    } else {
        int mid = (array.length) / 2;
        int leftmax = max(array.substring(0, mid));
        int rightmax = max(array.substring(mid, array.length));
        if (leftmax > rightmax) {
            return leftmax;
        } else {
            return rightmax;
        }

    }
}

您将要使用Arrays.copyOfRange Substring在数组上不起作用。

int[] firstHalf = Arrays.copyOfRange(original, 0, original.length/2);
int[] secondHalf = Arrays.copyOfRange(original, original.length/2, original.length);

我无法评论您的算法。

由于array类型为int[]而不是String ,因此不能使用substring() 相反,请跟踪正在搜索的索引。 在每次迭代中复制数组都浪费了空间和时间。

int max( int[] array ){ return max( array, 0, array.length - 1 ); }

int max( int[] array, int low, int high )
{
    if (low == high) {
        return array[low];
    } 
    else {
        int mid = (high + low) / 2;
        int leftmax = max(array, low, mid );
        int rightmax = max(array, mid, high );
        if (leftmax > rightmax) {
            return leftmax;
        } 
        else {
            return rightmax;
        }

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM