Wir haben Ihnen in unserem vorherigen Artikel das Problem des Rückgabewerts in der php-rekursiven Funktion vorgestellt, daher stellen wir Ihnen heute das nächste logische Problem in der rekursiven PHP-Funktion vor, dieses Problem. Viele Freunde werden auftauchen, und ich werde es dir heute erklären!
Zuerst müssen wir wissen, was eine rekursive Funktion ist. Im Allgemeinen bedeutet es, eine eigene Funktion aufzurufen.
Jetzt müssen wir einen Code entwerfen, um das Problem der Überlagerung von 1 bis 10 zu lösen.
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); ?>
Das gewünschte Ergebnis kann nicht in A gedruckt, aber in B erreicht werden. Der einzige Unterschied zwischen den A- und B-Codes besteht in der Hinzufügung einer Rückgabe im if.
Beginnen wir mit der Analyse des gesamten rekursiven Prozesses. Schauen Sie sich Inception an, um Ihr Verständnis zu vertiefen: (Nehmen Sie den A-Code, der nicht implementiert werden kann)
10 Funktion: Nachdem die if-Anweisung beurteilt wurde, beginnt $tot mit der Überlagerung.
2. Hier kommt der entscheidende Punkt: Reduzieren Sie den Parameter um eins und führen Sie ihn dann wieder in die Funktion ein. (Kein Rückgabewert!!!)
3. Dann läuft der obige Prozess weiter, bis $sum=1, von außen nach innen, von 10 bis 1, diese 10 Schleifenebenen haben keinen Rückgabewert.
4. Bei $sum=0 ist ein Rückgabewert erforderlich.
Genau wie in Inception wacht der Protagonist im 11. Stockwerk der Träume auf, aber die Träume in den vorherigen 10 Stockwerken befinden sich alle im Schlafstadium. Glaubst du, dass dieser Protagonist aufwachen kann? Er kann nur im 11. Level des Traumlandes festsitzen und wird nie aufwachen.
Die einzige Möglichkeit für den Protagonisten, aufzuwachen, besteht darin, aus jeder Ebene seines Traums aufzuwachen und ins wirkliche Leben zurückzukehren. Im Vergleich zum A-Code erfordert der B-Code einen Rückgabewert von der ersten bis zur 11. Ebene. Nachdem die 11. Ebene aufgewacht war, wurde die 10. Ebene aktiviert, dann Schicht für Schicht aktiviert und schließlich reibungslos aufgewacht, und das Endergebnis wurde korrekt ausgegeben.
Zusammenfassung:
Durch die oben genannten logischen Probleme in der rekursiven PHP-Funktion fühlen sich viele Freunde möglicherweise genauso wie das, was ihnen begegnet ist. Ich hoffe, dass die beiden oben genannten Codeteile Ihnen bei der Lösung Ihres Problems helfen können!
Verwandte Empfehlungen:
Wie nutzt man rekursive PHP-Funktionen effektiv? Typische Beispiele für rekursive PHP-Funktionen
Das obige ist der detaillierte Inhalt vonLösung eines logischen Problems in der rekursiven PHP-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!