Beispiele für drei Methoden zur Implementierung der Rekursion in PHP

伊谢尔伦
Freigeben: 2023-03-07 18:50:01
Original
4147 Leute haben es durchsucht

Rekursive Funktionen werden oft von jedem verwendet. Sie rufen sich selbst direkt oder indirekt innerhalb des Funktionskörpers auf. Bedingungen müssen vor dem Aufruf selbst festgelegt werden, andernfalls werden die Aufrufe auf unbestimmte Zeit fortgesetzt. Im vorherigen Kapitel wird die php-rekursive Funktion vorgestellt und ein einfaches Beispiel zur Veranschaulichung vorgestellt. In diesem Abschnitt stellen wir verschiedene Möglichkeiten zur Implementierung rekursiver Funktionen in PHP vor. Hier sind drei grundlegende Möglichkeiten aufgeführt. Um es zu verstehen, ist ein gewisses Maß an Grundwissen erforderlich, einschließlich eines Verständnisses globaler Variablen, Referenzen und statischer Variablen sowie eines Verständnisses ihres Umfangs. Rekursive Funktionen sind auch eine gute Technik zur Lösung unendlicher Klassifizierungsebenen.

1. Referenzen als Parameter verwenden

Referenzen bedeuten lediglich, dass zwei Variablen mit unterschiedlichen Namen auf dieselbe Speicheradresse verweisen. Ursprünglich hatte jede Variable ihre eigene Speicheradresse und das Zuweisen und Löschen verlief auf eigene Weise. Jetzt müssen sich zwei Variablen eine Speicheradresse teilen. $a=&$b; . Was es tatsächlich bedeutet, ist, dass $a unabhängig von seiner ursprünglichen Speicheradresse einen Raum mit $b teilen muss. Daher wirkt sich jede Änderung des gespeicherten Adresswerts auf beide Werte aus. ​

Funktionen erledigen ursprünglich ihre eigene Sache, auch wenn es sich um Funktionen mit demselben Namen handelt. Rekursive Funktionen berücksichtigen Referenzen als Parameter und werden zu einer Brücke, um den Datenaustausch zwischen zwei Funktionen zu bilden. Obwohl die beiden Funktionen scheinbar an unterschiedlichen Adressen arbeiten, arbeiten sie tatsächlich an derselben Speicheradresse.

Schauen wir es uns anhand eines Beispiels an:

<?php
function test($a=0,&$result=array()){
 $a++;
 if ($a<10) {
   $result[]=$a;
   test($a,$result);
 }
 echo $a;
 return $result;
}
test();
?>
Nach dem Login kopieren

Das obige Beispiel ist sehr einfach, wenn die Bedingung a<10 ist ist wahr, dann weisen Sie a zu. Übergeben Sie die Referenz von result an result[] und das von jeder Rekursion generierte a wird dem Ergebnisarray result hinzugefügt. Daher ist das in diesem Beispiel generierte $result-Array Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [ 5] => 6 [6] => 7 [7] =>

Was in diesem Beispiel interessanter ist, ist der Wert von echo $a. Ich glaube, viele Leute denken, es sei 12345678910, aber das ist nicht der Fall. Es ist

1098765432. Warum? Weil die nächste Funktionsrekursion durchgeführt wird, bevor die Funktion echo $a ausführt. Die tatsächliche Ausführung von echo $a erfolgt, wenn die Bedingung a<10 nicht erfüllt ist. echo $a gibt das Ergebnis zurück. Für die obere Ebene beginnt nach der Ausführung der rekursiven Funktion die Ausführung von echo $a dieser Ebene usw .

2. Verwenden Sie globale Variablen

Verwenden Sie globale Variablen, um rekursive Funktionen auszuführen. Bitte verstehen Sie zuerst, was globale Variablen sind. Die innerhalb der Funktion deklarierte globale Variable ist lediglich eine Referenz auf die externe Variable mit demselben Namen. Der Gültigkeitsbereich der Variablen liegt weiterhin im Gültigkeitsbereich dieser Funktion. Wenn Sie die Werte dieser Variablen ändern, ändern sich natürlich auch die Werte externer Variablen mit demselben Namen. Aber sobald

& verwendet wird, ist die Variable mit demselben Namen keine Referenz mit demselben Namen mehr.

Das Folgende ist ein Beispiel:

<?php
function test($a=0,$result=array()){
 global $result;
 $a++;
 if ($a<10) {
   $result[]=$a;
   test($a,$result);
 }
 return $result;
}
?>
Nach dem Login kopieren

3. Verwenden Sie statische Variablen

Hier verwenden wir

statisch in der Klasse und heute verwenden wir es in der rekursiven Funktion. Denken Sie an die Rolle von Static: Initialisieren Sie die Variable nur beim ersten Aufruf der Funktion und behalten Sie den Variablenwert bei.

Im Folgenden wird ein Beispiel zur Veranschaulichung verwendet:

<?php
function test(){
 static $count=0;
 echo $count;
 $count++;
}
test();
test();
test();
test();
test();
?>
Nach dem Login kopieren
Erklärung: Was ist das Ausführungsergebnis dieses Codeabschnitts? Sie denken vielleicht, dass es

00000 ist, aber die Antwort ist natürlich nein. Das Ausgabeergebnis ist 01234. Wenn Sie test() zum ersten Mal aufrufen, initialisiert static $count. Nach jeder Ausführung bleibt der Wert von $count erhalten und wird nicht erneut initialisiert. Dies entspricht dem direkten Ignorieren des Satzes static $count=0 ;. Man kann sich also vorstellen, welchen Effekt die Anwendung von Statik auf eine rekursive Funktion hat. Variablen, die als „Brücken“ zwischen rekursiven Funktionen verwendet werden müssen, werden statisch initialisiert, und der Wert der „Brückenvariablen“ bleibt für jede Rekursion erhalten.

Zusammenfassung

Die sogenannte rekursive Funktion konzentriert sich darauf, wie mit dem Funktionsaufruf selbst umgegangen wird und wie sichergestellt werden kann, dass die erforderlichen Ergebnisse angemessen „übertragen“ werden können " zwischen Funktionen. Die oben genannten sind die drei grundlegenden Möglichkeiten, Rekursion in PHP zu implementieren. Freunde können verschiedene Codes selbst ausprobieren, um diese Methoden besser und kompetenter zu beherrschen und eine gute Grundlage für zukünftiges Lernen und Entwicklung zu legen.

【Empfohlene verwandte Tutorials】

1. "

php.cn Dugu Jiujian (4) - PHP-Video-Tutorial 2 Eine vollständige Reihe von Video-Tutorials zur PHP-Programmierung vom Einstieg bis zur Beherrschung

3.
Praktische PHP-Video-Tutorials

Das obige ist der detaillierte Inhalt vonBeispiele für drei Methoden zur Implementierung der Rekursion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage