Pour faire une récursion avec Python2

Pour obtenir les meilleurs résultats en revisitant la fin, créez une classe et effectuez une métaprogrammation en commençant par @. (réf: http://code.activestate.com/recipes/496691/)

tail_recursive.py


class tail_recursive (object):

  def __init__(self, func):
    self.func = func
    self.firstcall = True
    self.CONTINUE = object()

  def __call__(self, *arguments, **keywords):
    if self.firstcall:
      func = self.func
      CONTINUE = self.CONTINUE
      self.firstcall = False
      try:
        while True:
          result = func(*arguments, **keywords)
          if result is CONTINUE: # update arguments
            arguments, keywords = self.argskwd
          else: # last call
            return result
      finally:
        self.firstcall = True
    else: # return the arguments of the tail call
      self.argskwd = arguments, keywords
      return self.CONTINUE

Utilisez ceci comme @tail_recursive. Tatoheba Suivant:

@tail_recursive
def sum(n, acc=0):
  if n == 0:
    return acc
  else:
    return sum(n - 1, acc + n)

@tail_recursive Vous pouvez vous déplacer sans lui. Cependant, la pile déborde immédiatement.

Recommended Posts

Pour faire une récursion avec Python2
Que faire avec la sortie de PYTHON?
Comment faire un test de sac avec python
Faites Houdini avec Python3! !! !!
Comment faire un traitement parallèle multicœur avec python
Essayez de défier le sol par récursif
Connectez-vous à BigQuery avec Python
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Connectez-vous à Wikipedia avec Python
Publiez sur Slack avec Python 3
Basculer python vers 2.7 avec des alternatives
Écrire en csv avec Python
Comment faire un calcul de hachage avec Salt en Python
[Python] Comment faire PCA avec Python
Python: comment utiliser async avec
Lien pour commencer avec python
[Python] Ecrire dans un fichier csv avec Python
Que faire avec l'installation de Magics
Ravi de vous rencontrer avec python
Essayez d'exploiter Facebook avec Python
Sortie vers un fichier csv avec Python
Convertir la liste en DataFrame avec python
Comment démarrer avec Python
Faisons du scraping d'images avec Python
Comment calculer la date avec python
Je veux faire ○○ avec les Pandas
Publiez facilement sur Twitter avec Python 3
Je veux déboguer avec Python
Python | Ce que vous pouvez faire avec Python
Que faire si vous ne pouvez pas installer pyaudio avec pip #Python
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Changer l'environnement Python 64 bits en environnement 32 bits avec Anaconda
Reconnaissance vocale en anglais avec python [speech to text]
Convertir un mémo à la fois avec Python 2to3
mail html avec image à envoyer avec python
Mémo pour demander des KPI avec python
python à retenir uniquement avec bonjour, mondes
Comment faire R chartr () en Python
Sortir les caractères de couleur en joli avec python
Introduction au remplissage d'image Python Remplissage d'image à l'aide d'ImageDataGenerator
Sortie du journal Python vers la console avec GAE
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Fractal pour faire et jouer avec Python
Je voulais résoudre ABC160 avec Python
Connectez-vous à MySQL avec Python dans Docker
Comment utiliser BigQuery en Python
[Introduction à Python] Utilisons foreach avec Python
Caméra à pixel unique à expérimenter avec Python
Convertissez des données FX 1 minute en données 5 minutes avec Python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Comment afficher le japonais python avec lolipop
Essayer de gérer SQLite3 avec Python [Note]