Java:递归查找列表中的最小元素

我将以说这是家庭作业为开头。我只是在寻找一些指示。我一直在为此绞尽脑汁,对于我的一生,我只是不明白。我们被要求在列表中找到最小的元素。我知道我在这里需要一个子列表,但是在那之后我不确定。任何指针都很棒。谢谢。

/** Find the minimum element in a list.

*

* @param t a list of integers

*

* @return the minimum element in the list

*/

public static int min(List<Integer> t) {

if (t.size() == 1){

return t.get(0);

}

else{

List<Integer> u = t.subList(1, t.size());

回答:

从最一般的意义上讲,递归是一个基于分解工作的概念,然后将较小的工作分派给自己的副本。为了使递归正常工作,您需要三件事:

  1. 工作细目。您如何使每个步骤变得“简单”?
  2. 递归调用。在某些时候,您的函数必须自行调用,但要减少“工作”。
  3. 基本情况。什么是(通常不重要的)最终案例,它将终止递归过程?

在您的情况下,您正在尝试创建min对列表进行操作的函数。您的想法是正确的,您可以通过使列表每次变小(以第一个元素为子列表)来减少(分解)工作。正如其他人提到的那样,该想法将是对照“列表的其余部分”检查第一个元素(刚刚删除的元素)。好了,这就是信仰突飞猛进的地方。在这一点上,您可以“假设”您的min函数将在子列表上运行,而只需在子列表上进行函数调用(递归调用)。现在,您必须确保所有呼叫都将返回(即,确保不会永远递归)。这就是您的基本案例的来源。如果列表大小为1,则唯一元素是列表中最小的元素。无需致电min再次,只需返回(您在原始帖子中已经拥有的那一部分)即可。

以上是 Java:递归查找列表中的最小元素 的全部内容, 来源链接: utcz.com/qa/401704.html

回到顶部