Maison > Java > javaDidacticiel > 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

王林
Libérer: 2023-04-24 12:52:15
avant
790 Les gens l'ont consulté

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>
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal