我在数组中找到最小值的递归程序不起作用

时间:2016-02-19 17:00:31

标签: 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){
    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

2 个答案:

答案 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));