gpt4 book ai didi

java - 在 Java 中的整数数组列表中查找最小值的递归函数

转载 作者:行者123 更新时间:2023-12-04 08:16:15 25 4
gpt4 key购买 nike

这是我在自学java的过程中一直在思考的一个问题。问题包括 编写一个递归函数,在整数 ArrayList 中找到最小值 .下面你会发现我的尝试。我相信它按预期工作,但我想知道是否有更好的方法来完成这项工作。任何意见表示赞赏。

public static int findMin(ArrayList<Integer> numbers){
// Base Case
if(numbers.size()==1){
return numbers.get(0).intValue();
}


ArrayList<Integer> numbers_short = new ArrayList<Integer>(numbers);
numbers.remove(numbers.size()-1);

return Math.min(numbers_short.get(numbers_short.size()-1).intValue(), findMin(numbers));
}

最佳答案

您的示例在这种情况下不应该使用递归的方式不太好。
但无论如何,您可以避免每次都复制数组,方法是使用带有开始和结束参数的方法来仅分析初始数组的一部分。
类似的东西:


public static int findMin(ArrayList<Integer> numbers) {
return findMin(numbers, 0, numbers.size() - 1);
}

public static int findMin(ArrayList<Integer> numbers, int start, int end) {
if (end == start)
return numbers.get(start);
int middle = start + (end - start) / 2;
return Math.min(findMin(numbers, start, middle), findMin(numbers, middle + 1, end));
}
并在需要时添加检查以防数组为空。
我使用“中间”方法的原因是每次将数组除以 2,这意味着最后它限制了堆栈溢出的风险,因为它将除以 2 的最大递归数比较递归每个元素。

关于java - 在 Java 中的整数数组列表中查找最小值的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65688334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com