Maison développement back-end tutoriel php Comment utiliser les fonctions récursives en PHP pour accumuler des nombres

Comment utiliser les fonctions récursives en PHP pour accumuler des nombres

Jul 01, 2017 pm 01:21 PM
php 函数 实现

Quelles sont les méthodes pour implémenter une fonction récursive ? Comment ajouter des nombres à l'aide d'une fonction récursive ? Cet article présente principalement les trois méthodes d'implémentation de la fonction récursive php et comment implémenter l'accumulation numérique. Les amis dans le besoin peuvent s'y référer.

Les fonctions récursives sont un type de fonction couramment utilisé en programmation. Sa caractéristique est que la fonction elle-même peut s'appeler, mais elle doit avoir un jugement conditionnel avant de s'appeler, sinon elle provoquera appels infinis. Cet article répertorie trois méthodes d'implémentation de fonctions récursives. La première utilise pour référencer comme paramètres, la seconde utilise des variables globales et la troisième utilise des variables statiques . ce genre de problème C'est un peu basique, y compris une compréhension des variables globales, des références et des variables statiques, ainsi qu'une compréhension de leur portée. Plus de bêtises ici, veuillez voir ci-dessous pour une introduction détaillée.

La première méthode : utiliser des références comme paramètres

Que les références soient des paramètres ou non, vous devez d'abord comprendre ce qu'est une référence ? Une référence signifie simplement que deux variables portant des noms différents pointent vers la même adresse de stockage. À l'origine, chaque variable avait sa propre adresse de stockage, et l'affectation et la suppression se déroulaient selon leur propre chemin.

D'accord maintenant, les deux variables partagent une adresse de stockage. $a=&$b; . Ce que cela signifie en réalité, c'est que $a doit partager une chambre avec $b quelle que soit son adresse de stockage d'origine. Par conséquent, toute modification de la valeur de l'adresse stockée affectera les deux valeurs. ​

Les fonctions font à l'origine leur propre travail, même s'il s'agit de fonctions portant le même nom. Les fonctions récursives envisagent de prendre des références comme paramètres et de devenir un pont pour former un partage de données entre deux fonctions. Bien que les deux fonctions semblent fonctionner sur des adresses différentes, elles opèrent en réalité sur la même adresse mémoire.

Le code est le suivant :

function test($a=0,&$result=array()){
$a++;
if ($a<10) {
    $result[]=$a;
    test($a,$result);
}
echo $a;
return $result;
}
Copier après la connexion

L'exemple ci-dessus est très simple. Utilisez a<10 comme condition de jugement. Si la condition est vraie, attribuez-la. a à result[] ; Passez la référence du résultat dans la fonction, et le a généré par chaque récursion sera ajouté au tableau de résultats result. Par conséquent, le tableau $result généré dans cet exemple est Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4 ] => 5 [5] => 6 [6] => 7 [7] =>

Ce qui est plus intéressant dans cet exemple, c'est la valeur de echo a . Je crois que beaucoup de gens pensent que c'est 12345678910, mais en réalité ce n'est pas le cas, c'est 1098765432. Pourquoi? Parce que la fonction a effectué la récursion de fonction suivante avant d'exécuter echo a.

L'exécution réelle de echo a se produit lorsque a<10 les conditions ne sont pas remplies, echo a, renvoie résultat,Pour la couche supérieure, après avoir exécuté la fonction récursive, commencez à exécuter le echo $a de cette couche, et ainsi de suite.

Deuxième méthode : utilisez des variables globales

Utilisez des variables globales pour compléter des fonctions récursives. Veuillez vous assurer de bien comprendre ce que sont les variables globales . globalDéclarer des variables dans une fonction n'est rien de plus qu'une référence à une variable externe du même nom. La portée de la variable est toujours dans la portée de cette fonction. Changer les valeurs de ces variables modifiera naturellement les valeurs des variables externes du même nom. Mais une fois & utilisé, la variable du même nom n'est plus une référence du même nom. Il n'est pas nécessaire de comprendre un niveau aussi profond pour utiliser des variables globales pour implémenter des fonctions récursives. Vous pouvez comprendre les fonctions récursives naturellement en conservant la vue originale des variables globales.

Le code est le suivant :

function test($a=0,$result=array()){
    global $result;
    $a++;
    if ($a<10) {
        $result[]=$a;
        test($a,$result);
    }
    return $result;
}
Copier après la connexion

La troisième méthode : utiliser des variables statiques

Nous Nous voyons souvent du static dans la classe. Aujourd'hui, nous l'utilisons dans les fonctions récursives. N'oubliez pas le rôle du statique : initialisez la variable uniquement la première fois que la fonction est appelée et conservez la valeur de la variable.

 Par exemple :

Le code est le suivant :

function test(){
static $count=0;
echo $count;
$count++;
}
test();
test();
test();
test();
test();
Copier après la connexion

J'aimerais savoir le résultat de l'exécution de ce code Combien ? Est-ce 00000 ? Certainement pas. Il s’agit du 01234. Tout d'abord, appelez test(), static pour la première fois pour initialiser $count Après chaque exécution, la valeur de $count sera conservée et ne le sera pas. être répété. L'initialisation équivaut à ignorer directement la phrase static $count=0;.

Par conséquent, l'effet de l'application de statique à une fonction récursive peut être imaginé. Utilisez static pour initialiser les variables qui doivent être utilisées comme "ponts" entre les fonctions récursives. Chaque récursion conservera la valeur de la "variable de pont".

Le code est le suivant :

function test($a=0){
    static $result=array();
    $a++;
    if ($a<10) {
        $result[]=$a;
        test($a);
    }
    return $result;
}
Copier après la connexion

Résumé

  所谓递归函数,重点是如何处理函数调用自身是如何保证所需要的结果得以在函数间合理"传递",当然也有不需要函数之间传值得递归函数,例如:

代码如下:

function test($a=0){
    $a++;
    if ($a<10) {
        echo $a;
        test($a);
    }
}
Copier après la connexion

下面通过一段代码演示一下php使用递归函数实现数字累加的方法。

代码如下所示:

代码如下:

<?php
function summation ($count) {
   if ($count != 0) :
     return $count + summation($count-1);
   endif;
}
$sum = summation(10);
print "Summation = $sum";
?>
Copier après la connexion

      

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

See all articles