Maison >développement back-end >tutoriel php >Solution à un problème logique dans la fonction récursive PHP
Nous vous avons présenté le problème de la valeur de retour dans fonction récursive php dans notre article précédent, donc aujourd'hui nous allons vous présenter le prochain problème logique dans la fonction récursive php, ce problème De nombreux amis se présenteront, et je vais vous l'expliquer aujourd'hui !
Tout d'abord, il faut savoir ce qu'est une fonction récursive. De manière générale, cela signifie appeler sa propre fonction.
Nous devons maintenant concevoir un morceau de code pour résoudre le problème de superposition de 1 à 10.
Code A :
<?php //递归函数 $num=10; function add($sum){ static $tot; if($sum>=1){ $tot+=$sum; add(--$sum); }else{ return $tot; } } echo add($num); ?>
Code B :
<?php //递归函数 $num=10; function add($sum){ static $tot; if($sum>=1){ $tot+=$sum; return add(--$sum); }else{ return $tot; } } echo add($num); ?>
Le résultat souhaité ne peut pas être imprimé en A, mais peut être obtenu en B. La seule différence entre les codes A et B est l'ajout d'un retour dans le if.
Commençons par analyser l'ensemble du processus récursif. Vous pouvez aller regarder Inception pour approfondir votre compréhension : (Prenez le code A qui ne peut pas être implémenté comme exemple)
1. function , une fois l'instruction if jugée, $tot commence à se superposer.
2. Voici le point clé : réduire le paramètre de un puis le réintroduire dans la fonction. (Aucune valeur de retour !!!)
3. Ensuite, le processus ci-dessus continue de boucler jusqu'à $sum=1, de l'extérieur vers l'intérieur, de 10 à 1, ces 10 niveaux de boucles n'ont aucune valeur de retour.
4. Lorsque $sum=0, une valeur de retour est requise.
C'est comme dans Inception, le protagoniste se réveille au 11ème étage de rêves, mais les rêves des 10 étages précédents sont tous en phase de sommeil. Pensez-vous que ce protagoniste peut se réveiller ? C'est évidemment impossible. Il ne peut être coincé qu'au 11ème niveau du pays des rêves et ne se réveillera jamais.
La seule façon pour le protagoniste de se réveiller est de se réveiller de tous les niveaux de son rêve et de revenir à la vraie vie. Par rapport au code A, le code B nécessite une valeur de retour du premier niveau jusqu'au 11ème niveau. Ainsi, après le réveil de la 11ème couche, elle a activé la 10ème couche, puis a activé couche par couche, et s'est finalement réveillée en douceur, et le résultat final a été affiché correctement.
Résumé :
Grâce aux problèmes logiques ci-dessus dans la fonction récursive PHP, de nombreux amis peuvent ressentir la même chose que ce qu'ils ont rencontré. J'espère que les deux morceaux de code ci-dessus pourront vous aider à résoudre votre problème !
Recommandations associées :
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!