Heim >Java >javaLernprogramm >So ermitteln Sie den Maximalwert durch rekursiven Vergleich in Java

So ermitteln Sie den Maximalwert durch rekursiven Vergleich in Java

王林
王林nach vorne
2023-04-24 12:52:15789Durchsuche

Rekursiver Vergleich

Der Kern des rekursiven Vergleichs besteht darin, zunächst zwei Positionen (Startposition und Endposition) zu definieren und die Startpositions- und Endpositionswerte jedes Mal zu vergleichen, wenn der Wert der Startposition größer ist Setzen Sie den Endpositionswert und den Maximalwert auf den Wert der Startposition, setzen Sie dann die Endposition um -1 (ein Bit vorwärts) und setzen Sie den rekursiven Aufruf im Gegenteil fort, wenn der Wert der Endposition ist größer als die Startposition, setzen Sie den Maximalwert auf den Wert der Endposition und verschieben Sie die Startposition um +1 (ein Bit zurückbewegen), rufen Sie den Vergleich weiterhin rekursiv auf und geben Sie den Maximalwert bis zum Ende der Rekursion zurück . Der Ausführungsprozess ist in der folgenden Abbildung dargestellt:

So ermitteln Sie den Maximalwert durch rekursiven Vergleich in Java


Der Implementierungscode lautet wie folgt:

<code>public class ArrayMax {<br>    public static void main(String[] args) {<br>        int[] arr = {3, 7, 2, 1, -4};<br>        int max = findMaxByRecursive(arr, 0, arr.length - 1, 0); // 根据 Collections 查找最大值<br>        System.out.println("最大值是:" + max);<br>    }<br><br>    /**<br>     * 根据递归查询最大的值<br>     * @param arr  待查询数组<br>     * @param head 最前面的元素的下标<br>     * @param last 最末尾的元素的下标<br>     * @param max  (临时)最大值<br>     * @return 最大值<br>     */<br>    private static int findMaxByRecursive(int[] arr, int head, int last, int max) {<br>        if (head == last) {<br>            // 递归完了,返回结果<br>            return max;<br>        } else {<br>            if (arr[head] > arr[last]) {<br>                max = arr[head]; // 赋最大值<br>                // 从后往前移动递归<br>                return findMaxByRecursive(arr, head, last - 1, max);<br>            } else {<br>                max = arr[last]; // 赋最大值<br>                // 从前往后移动递归<br>                return findMaxByRecursive(arr, head + 1, last, max);<br>            }<br>        }<br>    }<br>}<br></code>

Das Ausführungsergebnis des obigen Programms ist:

Der Maximalwert ist: 7

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie den Maximalwert durch rekursiven Vergleich in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen