Inti perbandingan rekursif adalah untuk mentakrifkan dua kedudukan dahulu (kedudukan mula dan kedudukan akhir), dan membandingkan nilai kedudukan mula dan kedudukan akhir setiap kali daripada kedudukan permulaan adalah lebih besar daripada nilai kedudukan akhir, tetapkan nilai maksimum kepada nilai kedudukan mula, kemudian tetapkan kedudukan akhir -1 (bergerak satu bit ke hadapan), dan teruskan panggilan rekursif, sebaliknya apabila nilai kedudukan akhir adalah lebih besar daripada kedudukan mula, tetapkan nilai maksimum kepada nilai kedudukan akhir, tambahkan kedudukan permulaan sebanyak 1 (bergerak satu bit ke belakang), teruskan memanggil perbandingan secara rekursif, dan kembalikan nilai maksimum sehingga akhir daripada rekursi. Proses pelaksanaan adalah seperti yang ditunjukkan dalam rajah di bawah:
Kod pelaksanaan adalah seperti berikut:
<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>
The hasil pelaksanaan program di atas ialah:
Nilai maksimum ialah: 7
Atas ialah kandungan terperinci Bagaimana untuk mencari nilai maksimum melalui perbandingan rekursif di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!