当前位置: 首页 > 面试题库 >

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

陆俊智
2023-03-14
问题内容

对于需要解决的问题之一,我使用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)



 类似资料:
  • 我正在学习c并编写一个递归函数来查找数组中的最小值。该函数被赋予一个整数数组和两个索引:low和high(low 这是一项家庭作业,我花了几个小时研究如何找到工作。程序返回“线程断点”,我感觉我在正确的轨道上,但可能缺少一些东西。如果有人能给我指出正确的方向,或者给我一个提示,告诉我我做错了什么。谢谢

  • 那么我如何使用这个pair类和我的方法来找到最小值和最大值。

  • 我需要编写一个递归方法,它需要两个并行数组和单词来查找,查找指定的单词并在另一个数组上每次索引匹配时求和值。例如: 如果我说我需要查找单词,它应该在找到索引时对第二个数组上的值求和。在这种情况下,它应该求和,。 如何使我的递归方法使其采用适当的参数并递归地进行计算。我将使用硬编码值。 这是我目前所拥有的。我很确定我的递归方法需要更多参数,但我会看看是否有人能帮助我

  • 我试图创建一个递归函数,查找数组中低整数和高整数之间的最大数字。 我尝试了这个函数,它可以帮助递归地查找数组中的最大元素。我只是不知道如何向函数中添加一个低整数和一个高整数,以找到这两个整数之间的最大值。 目标是有一个看起来像这样的函数:

  • 我得到了岩石的价格和数组中每一块岩石的值。我必须递归地(仅使用列出的4个变量)检查所有可能的岩石组合,以找到低于或等于岩石组合允许的最大重量的最高价格。 例如: 在这种情况下,可以找到的最高价格是50,因为20的重量低于25,值是50。这比5-10的权重高,5-10的权重也低于25,但它们的值加起来只有40,小于50。 示例2: 在这种情况下,最高价格是80美元。这是因为权重20 10加起来等于最

  • 我想知道我可以在给定的数组中计算2条特定路径吗。 > < li> 如何返回从[0][0]到[m][n]的最短(或最长)路径?我设法递归地遍历数组,但是我不知道如何“保存”路径并检查哪一个返回的路径更小。 第二个请求是一个我已经纠结了很长时间的问题,但我看到了关于使用和计算这些数组中的值的其他问题。