Heim Backend-Entwicklung PHP-Tutorial Unerwartete Ausgabe der Rekursivfunktion von PHP: Warum druckt eine einfache Additionsfunktion '85' anstelle von '8'?

Unerwartete Ausgabe der Rekursivfunktion von PHP: Warum druckt eine einfache Additionsfunktion '85' anstelle von '8'?

Apr 01, 2025 am 06:12 AM
Warum

Unerwartete Ausgabe der Rekursivfunktion von PHP: Warum druckt eine einfache Additionsfunktion

Detaillierte Erläuterung der rekursiven PHP -Funktion: Analyse der unerwarteten Ausgabe der Additionsfunktion

Dieser Artikel analysiert ein Beispiel für eine rekursive PHP -Funktion, um zu erklären, warum seine Ausgabeergebnisse nicht mit den Erwartungen übereinstimmen. Der Code ist wie folgt:

  Php
Funktion SD ($ A = 3, $ B = 2) {
   $ C = $ A $ B;
   if ($ c 
Nach dem Login kopieren
Nach dem Login kopieren

Die Funktion sd() akzeptiert zwei Parameter a und b , und die Standardwerte betragen 3 bzw. 2. Die Funktion berechnet die Summe von a und b und weist den Wert c . Wenn c weniger als 6 ist, rufen Sie sich rekursiv selbst an und bestehen Sie a und die neuen c -Werte als Parameter. Schließlich druckt die Funktion den Wert von c .

Nach der Ausführung sd() ist das Ausgabeergebnis eher "85" als die erwartete "8". Dies liegt daran, dass das Verständnis der Reihenfolge rekursiver Anrufe und der Ausführung echo -Anweisungen voreingenommen ist.

Der Programmausführungsprozess ist wie folgt:

  1. Der erste Aufruf von sd() heißt a=3 , b=2 , c = 3 2 = 5 . Da c , ruft sich die Funktion selbst rekursiv auf und die Parameter werden zu <code>sd(3, 5) .
  2. Bei rekursiven Aufrufen a=3 , b=5 , c = 3 5 = 8 . Zu diesem Zeitpunkt endet c >= 6 . echo $c; Druck 8.
  3. Das Programm kehrt zu dem Ort zurück, an dem der erste Anruf sd() aufgerufen wird. echo $c; druckt den c -Wert beim ersten Anruf, der 5 ist.

Daher ist die endgültige Ausgabe "85". Es ist nicht so, dass die Variable c nicht überschrieben ist, sondern dass die echo -Anweisung am Ende der Funktion liegt und jedes Mal ausgeführt wird, wenn das rekursive endet, was zu zwei Drucken führt.

Um das Ergebnis "8" zu erhalten, müssen Sie die Funktionslogik ändern, z. B. die echo -Anweisung in if -bedingte Anweisung oder das Endergebnis nur am Ende der Rekursion drucken. Der geänderte Code kann wie folgt sein:

  Php
Funktion SD ($ A = 3, $ B = 2) {
   $ C = $ A $ B;
   if ($ c 
Nach dem Login kopieren
Nach dem Login kopieren

Diese geänderte Version verwendet die return , um den Wert von c zurückzugeben, um sicherzustellen, dass das Endergebnis erst gedruckt wird, nachdem die Rekursion vorbei ist.

Das obige ist der detaillierte Inhalt vonUnerwartete Ausgabe der Rekursivfunktion von PHP: Warum druckt eine einfache Additionsfunktion '85' anstelle von '8'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ich kann mich nicht als Stamm bei MySQL anmelden Ich kann mich nicht als Stamm bei MySQL anmelden Apr 08, 2025 pm 04:54 PM

Die Hauptgründe, warum Sie sich bei MySQL nicht als Root anmelden können, sind Berechtigungsprobleme, Konfigurationsdateifehler, Kennwort inkonsistent, Socket -Dateiprobleme oder Firewall -Interception. Die Lösung umfasst: Überprüfen Sie, ob der Parameter Bind-Address in der Konfigurationsdatei korrekt konfiguriert ist. Überprüfen Sie, ob die Root -Benutzerberechtigungen geändert oder gelöscht und zurückgesetzt wurden. Stellen Sie sicher, dass das Passwort korrekt ist, einschließlich Fall- und Sonderzeichen. Überprüfen Sie die Einstellungen und Pfade der Socket -Dateiberechtigte. Überprüfen Sie, ob die Firewall Verbindungen zum MySQL -Server blockiert.

So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen Apr 09, 2025 pm 12:21 PM

Das Wiederherstellen von gelöschten Zeilen direkt aus der Datenbank ist normalerweise unmöglich, es sei denn, es gibt einen Backup- oder Transaktions -Rollback -Mechanismus. Schlüsselpunkt: Transaktionsrollback: Führen Sie einen Rollback aus, bevor die Transaktion Daten wiederherstellt. Sicherung: Regelmäßige Sicherung der Datenbank kann verwendet werden, um Daten schnell wiederherzustellen. Datenbank-Snapshot: Sie können eine schreibgeschützte Kopie der Datenbank erstellen und die Daten wiederherstellen, nachdem die Daten versehentlich gelöscht wurden. Verwenden Sie eine Löschanweisung mit Vorsicht: Überprüfen Sie die Bedingungen sorgfältig, um das Verhandlich von Daten zu vermeiden. Verwenden Sie die WHERE -Klausel: Geben Sie die zu löschenden Daten explizit an. Verwenden Sie die Testumgebung: Testen Sie, bevor Sie einen Löschvorgang ausführen.

Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Navicat -Methode zum Anzeigen von MongoDB -Datenbankkennwort Apr 08, 2025 pm 09:39 PM

Es ist unmöglich, das MongoDB -Passwort direkt über Navicat anzuzeigen, da es als Hash -Werte gespeichert ist. So rufen Sie verlorene Passwörter ab: 1. Passwörter zurücksetzen; 2. Überprüfen Sie die Konfigurationsdateien (können Hash -Werte enthalten). 3. Überprüfen Sie Codes (May Hardcode -Passwörter).

Wie kann ich das Datenbankkennwort in Navicat für Mariadb anzeigen? Wie kann ich das Datenbankkennwort in Navicat für Mariadb anzeigen? Apr 08, 2025 pm 09:18 PM

Navicat für MariADB kann das Datenbankkennwort nicht direkt anzeigen, da das Passwort in verschlüsselter Form gespeichert ist. Um die Datenbanksicherheit zu gewährleisten, gibt es drei Möglichkeiten, Ihr Passwort zurückzusetzen: Setzen Sie Ihr Passwort über Navicat zurück und legen Sie ein komplexes Kennwort fest. Zeigen Sie die Konfigurationsdatei an (nicht empfohlen, ein hohes Risiko). Verwenden Sie Systembefehlsleitungs -Tools (nicht empfohlen, Sie müssen die Befehlszeilen -Tools beherrschen).

So installieren Sie MySQL in CentOS7 So installieren Sie MySQL in CentOS7 Apr 14, 2025 pm 08:30 PM

Der Schlüssel zur eleganten Installation von MySQL liegt darin, das offizielle MySQL -Repository hinzuzufügen. Die spezifischen Schritte sind wie folgt: Laden Sie den offiziellen GPG -Schlüssel von MySQL herunter, um Phishing -Angriffe zu verhindern. Add MySQL repository file: rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm Update yum repository cache: yum update installation MySQL: yum install mysql-server startup MySQL service: systemctl start mysqld set up booting

CentOS stoppt die Wartung 2024 CentOS stoppt die Wartung 2024 Apr 14, 2025 pm 08:39 PM

CentOS wird 2024 geschlossen, da seine stromaufwärts gelegene Verteilung RHEL 8 geschlossen wurde. Diese Abschaltung wirkt sich auf das CentOS 8 -System aus und verhindert, dass es weiterhin Aktualisierungen erhalten. Benutzer sollten eine Migration planen, und empfohlene Optionen umfassen CentOS Stream, Almalinux und Rocky Linux, um das System sicher und stabil zu halten.

MySQL kann den Prozess nicht beenden MySQL kann den Prozess nicht beenden Apr 08, 2025 pm 02:48 PM

Der Kill -Befehl in MySQL schlägt manchmal aufgrund des besonderen Status des Prozesses und des unsachgemäßen Signalpegels fehl. Zu den Methoden zur effektiven Beendigung des MySQL -Prozesses gehören: Bestätigung des Prozessstatus, Verwenden des Befehls von MySQLadmin (empfohlen), mithilfe von Kill -9 mit Vorsicht, Überprüfung der Systemressourcen und eingehender Fehlerbehebung von Fehlerprotokollen.

Navicat -Methode zum Anzeigen von SQLite -Datenbankkennwort Navicat -Methode zum Anzeigen von SQLite -Datenbankkennwort Apr 08, 2025 pm 09:36 PM

Zusammenfassung: Navicat kann SQLite -Passwörter nicht anzeigen, da: SQLite keine herkömmlichen Kennwortfelder enthält. Die Sicherheit von SQLite hängt von der Steuerung des Dateisystems an. Wenn das Dateikennwort vergessen wird, kann es nicht abgerufen werden (es sei denn, die Datenbank ist verschlüsselt, ist der Schlüssel erforderlich).

See all articles