我已经创建了一个程序,它使用递归查找数组中的最小值,但它不按我的意图工作。我不知道为什么,但它没有返回输出中的实际最低值。这是我的代码:
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;
}
}
我的输出是:
The Minimum Value in this Array is 0 at Index 0
Minimum is :0
答案 0 :(得分:2)
更改代码中的最小值,这是执行此反向作业的非常优化的代码
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);
}
}
希望我的帮助能够很好地编码。
答案 1 :(得分:0)
在不更改整个代码的情况下修复它的另一种简单方法是在main中调用findMin时,以数组的第一个值开始你的min。
System.out.println("Minimum is :" + m.findMin(arr, 0, arr[0]));
而不是
System.out.println("Minimum is :" + m.findMin(arr, 0, min));