gpt4 book ai didi

java - Java中使用递归查找数组中最大的元素

转载 作者:行者123 更新时间:2023-11-30 02:44:06 25 4
gpt4 key购买 nike

这是我到目前为止所拥有的,但我对如何跟踪索引感到困惑。我想改变方法的参数,但我不被允许。我只能使用循环来制作另一个数组。这些就是限制。

public class RecursiveFinder {

static int checkedIndex = 0;
static int largest = 0;


public static int largestElement(int[] start){
int length = start.length;

if(start[length-1] > largest){
largest = start[length-1];
int[] newArray = Arrays.copyOf(start, length-1);
largestElement(newArray);
}
else{
return largest;
}
}


/**
* @param args
*/
public static void main(String[] args) {
int[] array1 = {0,3,3643,25,252,25232,3534,25,25235,2523,2426548,765836,7475,35,547,636,367,364,355,2,5,5,5,535};
System.out.println(largestElement(array1));
int[] array2 = {1,2,3,4,5,6,7,8,9};
System.out.println(largestElement(array2));
}

}

最佳答案

递归方法不需要保留其中的最大值。

2参数方法

开始通话:

largestElement(array, array.length-1)

方法如下:

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

第三行方法是最难理解的。它返回两个元素之一,当前索引和要递归检查的剩余元素中的较大元素。

条件if (index>0)与while循环类似。只要索引保持正数(到达数组中的元素),就会调用该函数。

<小时/>

1个参数方法

这有点棘手,因为您必须传递比上一次迭代更小的数组。

public static int largestElement(int[] start) {
if (start.length == 1) {
return start[0];
}
int max = largestElement(Arrays.copyOfRange(start, 1, start.length));
return start[0] > max ? start[0] : max;
}

我希望你这样做是出于学习目的,实际上没有人需要在Java中这样做。

关于java - Java中使用递归查找数组中最大的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751992/

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