[PYTHON] Vielen Dank für die Fibonacci-Sequenz.

Hallo. Ich habe verschiedene Arten des Schreibens auf meine eigene Weise ausprobiert.

Ich würde es begrüßen, wenn Sie sich darauf beziehen könnten. Die folgende Beschreibung ist bekannt.

fib_1.py


def fib(n):
    if n == 1:
        return 0
    if n == 2:
        return 1
    else:
        return fib(n-1) +fib(n-2) 

Ich denke, es gibt auch so eine Schreibweise.

fib_2.py


def fib(n):
    if n == 1 or n == 2:
        return n-1
    return fib(n-1) +fib(n-2) 

Ich war glücklich, in die Hände zu klatschen, weil ich es für eine einfache Beschreibung optimieren konnte, Es gibt viele doppelte Berechnungen, deshalb möchte ich es irgendwie optimieren. Bereiten Sie ein Memo vor, indem Sie sich auf den Rat eines Experten beziehen. Es scheint, dass die Berechnung durch Extrahieren aus den zutreffenden reduziert werden kann.

fib_3.py


class fib:
    def __init__(self):
        self.table ={}
    def cal(self,n):
        if n <= 2:
            return n-1
        
        if n in self.table:
            return self.table[n]
        
        self.table[n] = self.cal(n-2)+self.cal(n-1)
        return self.table[n]

fib_sequence = fib()

Rekursive Verarbeitung + Memo, verstehe ich. Sie können dies auch tun. Ich habe ein bisschen damit gespielt.

fib_4.py


def fib(n):
    if n <= 2:
        return n-1
    
    if n in memo:
        return memo[n]
    memo[n] = fib(n-2)+fib(n-1)

    return memo[n]

memo = {}

Es scheint einen anderen Ansatz zu geben, der als gierige Methode bezeichnet wird, als mit einem Memo zu vereinfachen. Diesmal wird es wieder gemacht.

Stellen Sie sich vor, was Sie tun möchten Es macht Spaß, mit verschiedenen Ansätzen zu experimentieren.

Coco hatte auch eine Methode, die die for-Anweisung verwendete. Toll!!

Wenn Sie in Schwierigkeiten sind, weil Sie kein Bild erhalten können, senken Sie die Stufe und Ich denke, Sie sollten eine vorbereitende Übung im Artikel hier durchführen. Es ist hilfreich, dies war auch ein großartiger Artikel.

Recommended Posts

Vielen Dank für die Fibonacci-Sequenz.
Vielen Dank für die Registrierung von 100.000 Paiza.
Beispielprogramm zum Auffinden der Fibonacci-Sequenz
Fibonacci-Sequenz (ich kann dich nicht noch einmal fragen)
Ein Shell-Programm, das eine Fibonacci-Sequenz anzeigt
Fibonacci-Sequenz mit Python
[Python] Ein Programm zum Finden einer Fibonacci-Zahlenfolge (rekursive Funktion, Divisions-Governance-Methode, dynamische Planungsmethode)
Implementierung der Fibonacci-Sequenz
Das ... kann den Prozess, den Sie ausführen, nicht sehen? Der Grund für
Django Treffen Sie Ihre Auswahl nur für die Einrichtung, zu der Sie gehören
Erster Kaggle (Kaggle ①)
Für die Prüfung G-Test 2020 # 2
Kaguru zum ersten Mal
Was ist die Schnittstelle für ...
Können Sie diese Datei löschen?