簡體   English   中英

Java - 使用遞歸查找數組中的最大數

[英]Java - Find largest number in array using recursion

我正在嘗試使用遞歸來查找數組中的最大數,但沒有得到我希望的結果。 任何幫助將不勝感激。

public class ArrayMax {
    public static int largestInteger(int[] array) {

        return FindlargestInteger(array, 0, -99999999);

    }   

    public static int FindlargestInteger(int[] array, int index, int max) { 

        if (index == array.length)
            return max;

        if (array[index] > max) {
            max = array[index];
        }

        FindlargestInteger(array, index + 1, max);

        return max;     
    }
}

您需要return對該函數的調用,以便您的函數進行遞歸。

return FindlargestInteger(array, index + 1,max);

代碼

public static int FindlargestInteger(int[] array, int index,int max){   
    if(index == array.length)
        return max;

    if (array[index] > max){
        max = array[index];
    }
    return FindlargestInteger(array, index + 1,max);
}

您的FindlargestInteger方法當前不會遞歸。 您首先需要從一個基本案例開始; 如果您在數組的末尾,則返回最后一個元素; 否則返回當前索引處的最大元素或遞歸的結果。 而且,您不需要將max傳遞給函數。 你可以用類似1 的東西來做,

public static int FindlargestInteger(int[] array, int index) {
    if (index < array.length - 1) {
        return Math.max(array[index], FindlargestInteger(array, index + 1));
    }
    return array[array.length - 1];
}

如果目標不是遞歸,並且您使用的是 Java 8+,那么您可以使用IntStream類的單行方法來實現它

return IntStream.of(array).max();

1請遵循Java方法命名約定,方法名稱應以小寫字母開頭。 按原樣,您的方法看起來像一個構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM