PHP trouve récursivement la valeur minimale d'un tableau

WBOY
Libérer: 2023-05-22 19:00:35
original
484 Les gens l'ont consulté

En PHP, la récursion est une technique très utile qui peut résoudre de nombreux problèmes complexes. Lorsqu'il s'agit de tableaux, la récursivité peut également nous aider à trouver la valeur minimale du tableau. Dans cet article, nous verrons comment calculer la valeur minimale d'un tableau en PHP en utilisant la récursivité.

Qu'est-ce que la récursivité ?

La récursion est une technique où une fonction s'appelle elle-même. Dans une fonction récursive, la méthode de résolution de problèmes s’appelle elle-même pour résoudre des sous-problèmes plus petits. Lorsque le problème devient trop petit pour être décomposé davantage, la fonction récursive cesse de s'appeler et renvoie le résultat. La récursivité est souvent utilisée pour résoudre des problèmes complexes tels que le parcours de structures arborescentes, les recherches de graphiques et les algorithmes de tri et de recherche.

Implémentation récursive

Commençons par un exemple simple : calculer la somme d'un tableau. Nous pouvons implémenter cet algorithme en utilisant la récursion :

function sum($arr){
    if(count($arr) == 0){
        return 0;
    } else {
        $first = array_shift($arr);
        return $first + sum($arr);
    }
}

// 测试
$arr = array(1, 2, 3, 4, 5);
echo sum($arr); // 输出 15
Copier après la connexion

Dans le code ci-dessus, nous vérifions d'abord si le tableau est vide. Si oui, renvoie 0. Sinon, nous insérons le premier élément du tableau et l'ajoutons avec la fonction sum() appelant et transmettant récursivement le reste du tableau. Ce processus se poursuit jusqu'à ce que nous ayons traité l'intégralité du tableau. Enfin, nous renvoyons les résultats.

Pile d'appels de fonctions récursives

Remarque : les techniques récursives sont très utiles, mais elles peuvent également causer des problèmes. En effet, chaque appel de fonction ajoute un nouveau cadre à la pile et la taille de la pile est limitée. Si la profondeur de récursion est trop grande, la pile risque d'être épuisée. En PHP, par défaut, la taille de la pile est de 1 000 appels de fonction. Pour éviter cela, nous pouvons utiliser l'itération au lieu de la récursion ou augmenter la taille maximale de la pile de PHP.

Calculer la valeur minimale d'un tableau

Ensuite, voyons comment utiliser la récursivité pour trouver la valeur minimale d'un tableau en PHP. L'idée d'implémenter cet algorithme est similaire au calcul de la somme d'un tableau :

function findMinimum($arr){
    // 如果数组为空,则返回NULL
    if(count($arr) == 0){
        return NULL;
    } else if(count($arr) == 1){
        // 如果数组只有一个元素,则返回它
        return $arr[0];
    } else {
        // 否则,递归地调用自身,并比较子数组的最小值
        $first = $arr[0];
        $rest = array_slice($arr,1);
        $min = findMinimum($rest);
        if($min < $first){
            return $min;
        } else {
            return $first;
        }
    }
}

// 测试
$arr = array(1, 3, 2, 5, 4);
echo findMinimum($arr); // 输出 1
Copier après la connexion

Tout d'abord, nous vérifions la taille du tableau. Si le tableau est vide, NULL est renvoyé. S'il n'y a qu'un seul élément, renvoyez-le. Sinon, nous sauvegardons le premier élément du tableau dans la variable $first et les éléments restants dans la variable $rest. Ensuite, nous l'appelons de manière récursive, en passant le tableau $rest comme argument. Cela renverra la valeur minimale du sous-tableau. Enfin, nous comparons $min et $first et renvoyons le minimum des deux.

Résumé

Dans cet article, nous avons discuté de la méthode de calcul de la valeur minimale dans un tableau en PHP par récursivité. Bien que la récursivité soit une technique très utile, elle peut également entraîner des problèmes tels que des débordements de pile. Par conséquent, nous devons être prudents lorsque nous utilisons la récursivité. Si la possibilité de débordement de pile est élevée, nous pouvons envisager d'utiliser un algorithme itératif ou d'augmenter la taille maximale de la pile de PHP.

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!

source:php.cn
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