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