Bonjour. J'ai essayé différentes manières d'écrire à ma manière.
J'apprécierais que vous y fassiez référence. La description suivante est familière.
fib_1.py
def fib(n):
if n == 1:
return 0
if n == 2:
return 1
else:
return fib(n-1) +fib(n-2)
Je pense qu'il existe aussi une telle manière d'écrire.
fib_2.py
def fib(n):
if n == 1 or n == 2:
return n-1
return fib(n-1) +fib(n-2)
J'étais heureux de battre des mains car j'ai pu l'optimiser pour une simple description, Il y a beaucoup de calculs en double, donc je veux l'optimiser d'une manière ou d'une autre. Préparer une note en vous référant aux conseils d'un expert, Il semble que le calcul puisse être réduit en extrayant de ceux applicables.
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()
Traitement récursif + mémo, je vois. Vous pouvez également le faire. J'ai joué un peu avec.
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 = {}
Il semble y avoir une approche appelée la méthode gourmande autre que la simplification avec un mémo, Ce sera refait cette fois.
Imagine ce que tu veux faire C'est amusant d'expérimenter différentes approches.
Coco avait également une méthode utilisant l'instruction for. Génial!!
Si vous avez des problèmes parce que vous ne pouvez pas obtenir d'image, baissez le niveau et Je pense que vous devriez faire un exercice préparatoire avec l'article ici. C'est utile, c'était aussi un excellent article.
Recommended Posts