Es ist schwierig, eine rekursive Funktion zu erstellen, nicht wahr? Es gibt viele Kommentarartikel zu rekursiven Funktionen, aber es scheint, dass es nur wenige Artikel gibt, die erklären, wie rekursive Funktionen erstellt werden, und nur den Code der bereits vorhandenen rekursiven Funktionen erläutern. ..
Wenn Sie den Artikel zum Erstellen einer rekursiven Funktion untersuchen, zeigt englischer Artikel hier den Ablauf des Erstellens einer rekursiven Funktion. Ich habe es leicht verständlich erklärt. Ich habe versucht, den Inhalt des englischen Artikels selbst zu übersetzen, daher möchte ich ihn gerne teilen.
Kurz gesagt, eine Funktion, die einen eigenen Aufruf enthält. Einzelheiten finden Sie in anderen Artikeln.
Lassen Sie uns zunächst die Funktionen verstehen, aus denen eine rekursive Funktion besteht. Zum Erstellen einer rekursiven Funktion sind zwei Funktionen erforderlich:
Betrachten Sie beispielsweise eine rekursive Funktion, die eine Zeichenfolge invertiert. Teilen wir es in die beiden oben genannten Funktionen ein:
def reverse_string(str1):
#Stoppfunktion
if len(str1)<2:
return str1
#Rekursive Funktion
return reverse_string(str1[1:])+str1[0]
Ich denke, es ist relativ einfach, den Teil der Stoppfunktion in Code umzuwandeln. Andererseits kann es schwierig sein, rekursive Features in Code umzuwandeln. Daher werde ich den Ablauf der Konvertierung dieser rekursiven Funktion in Code erläutern.
Konvertieren Sie rekursive Funktionen mit dem folgenden Ablauf in Code:
Wenn Problemlösung </ font> ein Problem im Zusammenhang mit n Problemen ist, ist ein einstufiges einfaches Problem </ font> ein Bild eines Problems im Zusammenhang mit n-1 Problemen. .. Ich werde die Bedeutung der Erklärung in der Präambel konkret anhand des Beispiels in Kapitel 5 zeigen.
In Kapitel 3 haben wir einen Flow erstellt, der rekursive Funktionen in Code konvertiert. Lassen Sie uns nun die Flüsse zusammenfassen, aus denen die rekursive Funktion besteht.
Erstellen wir eine rekursive Funktion, die das folgende Beispiel gemäß dem Ablauf in Kapitel 3 löst.
** Problem: Invertieren Sie die Zeichenfolge. (Beispiel: abc → cba) **
Sei str1 die Zeichenkette, die du invertieren willst. (In Python codiert.)
Der Name der rekursiven Funktion sei reverse_string:
def reverse_string(str1):
Konvertieren Sie die Stoppfunktion in Code:
def reverse_string(str1):
#Stoppfunktion
#Wenn die Länge der Zeichenfolge 1 beträgt, wird sie aus der Funktion entfernt.
if len(str1)<2:
return str1
Konvertieren Sie rekursive Funktionen in Code
Zu lösendes Problem </ font>: Invertieren Sie die Zeichenfolge str1
Einfaches Problem in einem Schritt </ font>: Invertiert "eine Zeichenfolge, in der das erste Zeichen aus der Zeichenfolge gelöscht wird" (dies wird als str1_rem bezeichnet). Hier drücken wir str1_rem im Code aus:
```python
def reverse_string(str1):
#Stoppfunktion
#Wenn die Länge der Zeichenfolge 1 beträgt, wird sie aus der Funktion entfernt.
if len(str1)<2:
return str1
#Löschen Sie das erste Zeichen aus der Zeichenfolge str1
str1_rem=str1[1:]
```
Ein einfaches Problem in einem Schritt </ font> kann durch Ihre eigene Funktion (reverse_string) gelöst werden ** Ich glaube von ganzem Herzen **!
Die Lösung, die die Funktion reverse_string für das einfache Problem in einem Schritt </ font> erhält, ist sol1 (ich glaube von ganzem Herzen). Das heißt, sol1 = reverse_string ("eine Zeichenkette, die durch Subtrahieren des ersten Zeichens von der Zeichenkette erhalten wird") (ich glaube von ganzem Herzen):
```python
def reverse_string(str1):
#Stoppfunktion
#Wenn die Länge der Zeichenfolge 1 beträgt, wird sie aus der Funktion entfernt.
if len(str1)<2:
return str1
#Löschen Sie das erste Zeichen aus der Zeichenfolge str1
str1_rem=str1[1:]
#reverse_Zeichenfolge ist str1_Ich glaube von ganzem Herzen, dass ich vorher umkehren kann.
sol1=reverse_string(str1_rem)
```
Drücken Sie in sol1 die Lösung (sol) des -Lösungsproblems </ font> aus. Wenn nach sol1 "das erste Zeichen der Zeichenkettenzeichenfolge" hinzugefügt wird, wird es zu sol. Mathematisch gesehen ist sol = sol1 + "das erste Zeichen der Zeichenfolge":
```python
def reverse_string(str1):
#Stoppfunktion
#Wenn die Länge der Zeichenfolge 1 beträgt, wird sie aus der Funktion entfernt.
if len(str1)<2:
return str1
#Löschen Sie das erste Zeichen aus der Zeichenfolge str1
str1_rem=str1[1:]
#sol1 ist str1_Ich glaube von ganzem Herzen, dass es vorher eine umgekehrte Zeichenkette war.
sol1=reverse_string(str1_rem)
#Drücken Sie sol von sol1 aus
sol=sol1+str1[0]
return sol
```
** Seltsamerweise erzeugt dies eine rekursive Funktion **! ..
Wenn Sie den obigen Code kürzen,
def reverse_string(str1):
if len(str1)<2:
return str1
return reverse_string(str1[1:])+str1[0]
Es wird.
Wenn der japanische Artikel schwer zu verstehen ist, werden die Details häufig im englischen Artikel geschrieben. Bevor Sie sich daran gewöhnen, wird empfohlen, den obigen Ablauf vor dem Codieren zu schreiben. Lassen Sie uns zunächst mit einem einfachen Beispiel üben. Zum Beispiel das Problem, alle Elemente eines Arrays anzuzeigen.
Wir möchten uns bei denen bedanken, die kommentiert haben und bei denen, die es korrigiert haben.
Recommended Posts