Maison  >  Article  >  Java  >  Comment trouver la valeur maximale grâce à une comparaison récursive en Java

Comment trouver la valeur maximale grâce à une comparaison récursive en Java

王林
王林avant
2023-04-24 12:52:15770parcourir

Comparaison récursive

Le cœur de la comparaison récursive est de définir d'abord deux positions (position de départ et position de fin) et de comparer les valeurs de la position de départ et de la position de fin à chaque fois lorsque la valeur de la position de départ est supérieure à. la valeur de la position finale, la valeur maximale définie sur la valeur de la position de départ, puis définir la position finale de -1 (avancer d'un bit), et continuer l'appel récursif au contraire, lorsque la valeur de la position finale est ; supérieur à la position de départ, définissez la valeur maximale sur la valeur de la position de fin et déplacez la position de départ +1 (reculez d'un bit), continuez à appeler la comparaison de manière récursive et renvoyez la valeur maximale jusqu'à la fin de la récursion . Le processus d'exécution est illustré dans la figure ci-dessous :

Comment trouver la valeur maximale grâce à une comparaison récursive en Java


Le code d'implémentation est le suivant :

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

Le résultat de l'exécution du programme ci-dessus est :

La valeur maximale est : 7

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer