Maison >développement back-end >tutoriel php >Solution à un problème logique dans la fonction récursive PHP

Solution à un problème logique dans la fonction récursive PHP

黄舟
黄舟original
2017-11-13 09:50:341423parcourir

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 :

Solution au problème de valeur de retour de la fonction récursive PHP


Analyse de trois façons d'implémenter la fonction récursive PHP


Exemples d'utilisation des fonctions récursives php

Comment utiliser efficacement les fonctions récursives php ? Exemples typiques de fonctions récursives 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!

Déclaration:
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