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:
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!