Java 我在数组中查找最小值的递归程序不起作用
我已经创建了一个程序,使用递归在数组中查找最小值,但它并没有按照我的预期工作。我不知道为什么,但它没有返回我输出中的实际最低值。这是我的密码:Java 我在数组中查找最小值的递归程序不起作用,java,arrays,recursion,Java,Arrays,Recursion,我已经创建了一个程序,使用递归在数组中查找最小值,但它并没有按照我的预期工作。我不知道为什么,但它没有返回我输出中的实际最低值。这是我的密码: package weekFour; public class MinInt { static int[] arr = {24,52,74,9,34,23,64,34}; static int min; static int minIndex; public static void main(String[] args
package weekFour;
public class MinInt {
static int[] arr = {24,52,74,9,34,23,64,34};
static int min;
static int minIndex;
public static void main(String[] args){
MinInt m = new MinInt();
System.out.println("Minimum is :" + m.findMin(arr, 0, min));
}
public int findMin(int[] arr, int index, int min){
if(index <= (arr.length - 1)){ //makes sure you only check elements in the array
if(arr[index] < min){ //if value is smaller than current min
min = arr[index]; //set new min
minIndex = index; //records position of min in array
}
return findMin(arr, index + 1, min); //recursive method call
}
System.out.println("The Minimum Value in this Array is " + min + " at Index " + minIndex);
return min;
}
}
更改代码中的最小值,这里是非常优化的代码,用于执行此反向工作
int mini(int array[], int size) {
if (size == 1) {
return array[0];
}
else {
return (array[size] < mini(array, size - 1)) ? array[size]: mini(array, size - 1);
}
}
intmini(int数组[],int大小){
如果(大小==1){
返回数组[0];
}
否则{
返回(数组[size]
希望我的帮助能很好地进行编码。另一种在不更改整个代码的情况下修复它的简单方法是,在调用main中的findMin时,在数组的第一个值处启动min
System.out.println("Minimum is :" + m.findMin(arr, 0, arr[0]));
而不是
System.out.println("Minimum is :" + m.findMin(arr, 0, min));
从
0
的初始min
开始。您如何期望阵列中的任何内容都小于此值?将起始最小值设置为整数。最大值
。将最小值作为数组的第一个元素。在本例中,最小值为0。如果(size==0),则需要将其更改为
,或者调用数组[size-1]
,否则将得到索引越界错误或不正确的结果。此外,这是非常低效的,因为您可以将mini(array,size-1)
的值存储在变量中,而不是在return
语句中调用它两次。e、 g.int x=mini(数组,大小为1);返回(数组[大小]
System.out.println("Minimum is :" + m.findMin(arr, 0, min));