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

2024-04-28

对于我被要求解决的问题之一,我使用 for 循环找到了数组的最大值,所以我尝试使用递归来找到它,这就是我想到的:

public static int findMax(int[] a, int head, int last) {

    int max = 0;
    if (head == last) {
        return a[head];
    } else if (a[head] < a[last]) {
        return findMax(a, head + 1, last);
    } else {
        return a[head];
    }
}

所以它工作正常并获得最大值,但我的问题是:对于基本情况返回 a[head] 以及当头部的值 > 最后的值的情况可以吗?


您可以轻松地仅使用一个计数器来完成此操作,只需使用您这次要比较的值的索引:

public static int findMax(int[] a, int index) {
    if (index > 0) {
        return Math.max(a[index], findMax(a, index-1))
    } else {
        return a[0];
    }
}

这更好地显示了正在发生的事情,并使用默认的“递归”布局,例如具有共同的基本步骤。初始调用是通过执行findMax(a, a.length-1).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用递归查找数组中的最大值 的相关文章

随机推荐