[PYTHON] Versuchen Sie, den Boden durch Rekursion herauszufordern

Guten Abend. Ich habe versucht, ein Anfänger zu sein Ich hoffe, es wird für alle hilfreich sein.

Wie können wir zum Beispiel 3 erreichen! (= 3 * 2 * 1)?

print(3*2*1)

Es ist geschafft (lacht)! Warum schreiben Sie es dann nicht so mit def?

test.py


def test(n:int=3):
    if n>1:
        return n * test(n-1)
    else:
        return 1

print(test())

Ich habe es eilig mit dem Anfangswert 3 versucht. Lassen Sie uns sie vorerst einzeln ersetzen. Erstens, wenn n == 3.

test.py


# n ==Wenn 3
def test(n:int=3):
    #n ==3 Gehen Sie also hinein, wenn
    if n>1:
       #return 3 * test(3-1)
        return n * test(n-1)
    else:
        return 1

print(test())

Hurra. Ich kann raus, weil die Rückkehr angekommen ist !! 3 * test(2) !? Sie können nicht beenden, ohne Test (2) zu kennen. Es gibt keine Möglichkeit. Ich bin nicht sicher, aber betrachte n == 2, dh Test (2).

test.py


# n ==Wann
def test(n:int=2):
    #n ==2 Gehen Sie also hinein, wenn
    if n>1:
       #return 2 * test(2-1)
        return n * test(n-1)
    else:
        return 1

print(test())

Hmm !? Rückgabe 2 * Test (1)!? Test () erscheint erneut, diesmal ist es jedoch Test (1). Es kann nicht geholfen werden, versuchen wir es auch mit Test (1).

test.py


# n ==Wenn 1
def test(n:int=1):
    if n>1:
        return n * test(n-1)
    #n ==Da es 1 ist, geht es sonst rein
    else:
        #Rückgabe 1
        return 1

print(test())

Wenn n == 1 ist, ist es vorerst 1, also Ich fand, dass die Antwort 1 ist. Ich bin froh, dass ich endlich eine ganze Zahl getroffen habe (lacht)

Lass es uns einmal organisieren. 図1.PNG Nach dem Ausführen von n == 3, wie in der Abbildung gezeigt, erschien n == 2 und dann n == 1. Als Bild ist 2 * Test (1) in Test (2) eingebettet. Es scheint, dass 1 * Test (0) in Test (1) eingebettet ist.

Was wir jetzt wissen ist, dass 1 * Test (0) 1 * 1 ist, Das heißt, es ist nur 1.

Okay, ignoriere 3 * Test (2) einmal Ersetzen wir Test (1) durch 2 * Test (1) in der Mitte der folgenden Abbildung durch 1 * Test (0). 図2.PNG Da 2 * Test (1) == 2 * {1 * Test (0)} ist, wissen wir, dass 2 * 1 = 2 ist. Das bedeutet. .. .. 図3.PNG 3 * Test (2) == 3 * {2 * Test (1)} == 3 * {2 * 1}. Damit habe ich es geschafft, 3 auszudrücken!

Wie oben erwähnt, wenn sich ein bestimmtes Ereignis einschließt Es soll rekursiv sein.

Mit dieser Idee kann natürlich nicht nur 3!, Sondern auch die Skala von n ausgedrückt werden. Es ist eine einfache Beschreibung, aber es ist kompliziert, wenn man richtig darüber nachdenkt. Es war interessant, danke für deine harte Arbeit (≧ ▽ ≦).

Andere Artikel
Ich habe den Stack in Python geschrieben
Versuchen Sie, zwei Stapel in Python auf einem Array zu implementieren
Mindestwert für mit Python erstellte Stapel(min)Fügen Sie die Fähigkeit hinzu, zurückzukehren, aber zu drücken/pop/min ist basisch O.(1) !!

Recommended Posts

Versuchen Sie, den Boden durch Rekursion herauszufordern
Versuchen Sie, Facebook mit Python zu betreiben
Versuchen Sie, sich mit ONNX Runtime zu profilieren
Schwanzrekursion mit Python2 durchführen
Versuchen Sie, Audio mit M5 STACK auszugeben
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Versuchen Sie, Kirschblüten mit xg Boost vorherzusagen
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Versuchen Sie schnell, Ihren Datensatz mit Pandas zu visualisieren
Erster Versuch von YDK mit Cisco IOS-XE
Versuchen Sie, ein Bild mit Entfremdung zu erzeugen
Versuchen Sie, Ihr eigenes AWS-SDK mit bash zu erstellen
Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Versuchen Sie, das Dokument der Azure-Dokumentdatenbank mit pydocumentdb zu extrahieren
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Versuche mit EV3 und PC zu kommunizieren! (MQTT)
So testen Sie den Friends-of-Friends-Algorithmus mit pyfof
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Versuchen Sie, Client-FTP mit Pythonista am schnellsten zu machen
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Versuchen Sie es mit Python.
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Versuchen Sie, yolact zu implementieren
Versuchen Sie SNN mit BindsNET
Versuchen Sie eine Regression mit TensorFlow
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Versuchen Sie, mit Tkinter in Python dynamisch einen Checkbutton zu erstellen
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Versuchen Sie, mit MVC eine RESTful-API mit Flask 1.0.2 zu erstellen
Schemagesteuerte Entwicklung mit Responder: Versuchen Sie, die Swagger-Benutzeroberfläche anzuzeigen
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
[Neo4J] ④ Versuchen Sie, die Diagrammstruktur mit Cypher zu handhaben
Ein Beispiel, um Faktorisierungsmaschinen schnell mit fastFM auszuprobieren
Versuchen Sie, Anfragen von iPhone mit Burp Suite zu manipulieren
Versuchen Sie die Funktionsoptimierung mit Optuna
Stellen Sie mit Python eine Verbindung zu BigQuery her
Versuchen Sie es mit TensorFlow
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
Versuchen Sie, mit dem Uprobe zu spielen, der Systemtap direkt unterstützt
Versuchen Sie, PythonTex mit Texpad zu verwenden.
[Evangelion] Versuchen Sie, mit Deep Learning automatisch Asuka-ähnliche Linien zu erzeugen
Versuchen Sie, verschiedene Informationen anzuzeigen, die für das Debuggen mit Python nützlich sind
Versuchen Sie die Kantenerkennung mit OpenCV
Versuchen Sie, RBM mit Chainer zu implementieren.
Versuchen Sie, Twitter-Trends zu analysieren
Versuchen Sie Google Mock mit C.
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie, mit einer Shell zu programmieren!
Versuchen Sie, Python selbst zu verstehen