java - 递归方法寻找最小整数?

标签 java arrays recursion methods minimum

所以我有一个作业,我必须创建一个接受 int[] 参数并返回最小 int 的方法。但只有一个问题......我们必须使用递归!无论如何,这是我的代码:

static int[] arr = {12, 8, 4, 17};

public static void main(String[] args){
System.out.println("Minimum is :" + findMin(arr));
}

public static int findMin(int[] iArray){
    if(arr.length == 0) {
        System.err.println("Please Pass An Array With At Least 1 Element.");
        return (Integer) null;
    }
    else return findMinFromArray(iArray, 0, iArray[0]); //call method with starting parameters ie index = 0 & min = iArray[0]
}

private static int findMinFromArray(int[] iArray, int index, int min) {
    if(index <= (iArray.length - 1)){
        if(iArray[index] < min){
            min = iArray[index];
        }
        System.out.println("Before: " + "Index = " + index + " | Min = " + min);
        findMinFromArray(iArray, index + 1, min);
    }
    System.out.println("After: " + "Index = " + index + " | Min = " + min);
    return min;
}

这是输出...

Before: Index = 0 | Min = 12
Before: Index = 1 | Min = 8
Before: Index = 2 | Min = 4
Before: Index = 3 | Min = 4
After: Index = 4 | Min = 4
After: Index = 3 | Min = 4
After: Index = 2 | Min = 4
After: Index = 1 | Min = 8
After: Index = 0 | Min = 12
Minimum is :12

正如您所看到的,代码可以正常工作,但我不确定如何让程序停止,而不是像现在这样再次返回。

最佳答案

你的错误是忽略了递归调用的结果。

改变

findMinFromArray(iArray, index + 1, min);

return findMinFromArray(iArray, index + 1, min);

完整的固定方法:

private static int findMinFromArray(int[] iArray, int index, int min) {
    if(index <= (iArray.length - 1)){
        if(iArray[index] < min){
            min = iArray[index];
        }
        System.out.println("Before: " + "Index = " + index + " | Min = " + min);
        return findMinFromArray(iArray, index + 1, min);
    }
    System.out.println("After: " + "Index = " + index + " | Min = " + min);
    return min;
}

输出:

Before: Index = 0 | Min = 12
Before: Index = 1 | Min = 8
Before: Index = 2 | Min = 4
Before: Index = 3 | Min = 4
After: Index = 4 | Min = 4

关于java - 递归方法寻找最小整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29855114/

相关文章:

java - Alpha 混合在 Android libgdx 上不起作用,但在桌面上起作用

string - 从方案中的字符串中删除重复的字符

java - 锁定应用程序焦点避免使用任何其他应用程序

java - SonarQube 鱿鱼中的误报 :S2583

c++ - 一个简约的智能数组(容器)类模板

c# - 如何获取子数组的引用

c - 检查字符串是否回文时出错

java - 数组的选择排序方法

java - 使用 TLSv1 甚至协议(protocol)配置为 SSL_TLSv2 的应用程序

使用 gsub 的 Ruby Regexp 是否有等同于 self 关键字?