Schwanzrekursion mit Python2 durchführen

Um die besten Ergebnisse zu erzielen, indem Sie das Ende erneut besuchen, erstellen Sie eine Klasse und führen Sie eine Metaprogrammierung durch, die mit @ beginnt. (Ref: 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

Verwenden Sie dies als @tail_recursive. Tatoheba Weiter:

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

@tail_recursive Sie können ohne es bewegen. Der Stapel läuft jedoch sofort über.

Recommended Posts

Schwanzrekursion mit Python2 durchführen
Was tun mit PYTHON Release?
Wie man einen Taschentest mit Python macht
Mach Houdini mit Python3! !! !!
So führen Sie eine Mehrkern-Parallelverarbeitung mit Python durch
Versuchen Sie, den Boden durch Rekursion herauszufordern
Stellen Sie mit Python eine Verbindung zu BigQuery her
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
So führen Sie eine Hash-Berechnung mit Salt in Python durch
[Python] Wie man PCA mit Python macht
Python: So verwenden Sie Async mit
Link, um mit Python zu beginnen
[Python] Mit Python in eine CSV-Datei schreiben
Was tun mit der Installation von Magics?
Schön dich mit Python zu treffen
Versuchen Sie, Facebook mit Python zu betreiben
Ausgabe in eine CSV-Datei mit Python
Konvertieren Sie die Liste mit Python in DataFrame
Erste Schritte mit Python
Lassen Sie uns mit Python Image Scraping durchführen
So berechnen Sie das Datum mit Python
Ich möchte ○○ mit Pandas machen
Mit Python 3 einfach auf Twitter posten
Ich möchte mit Python debuggen
Python | Was Sie mit Python machen können
Was tun, wenn Sie pyaudio nicht mit pip #Python installieren können?
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Ändern Sie die Python 64-Bit-Umgebung mit Anaconda in eine 32-Bit-Umgebung
Englische Spracherkennung mit Python [Rede zu Text]
Konvertieren Sie Memos sofort mit Python 2to3
HTML-Mail mit Bild zum Senden mit Python
Memo, um nach KPI mit Python zu fragen
Python nur mit Hallo, Welten zu erinnern
So machen Sie R chartr () in Python
Geben Sie Farbzeichen mit Python zu hübsch aus
Einführung in das Auffüllen von Python-Bildern Auffüllen von Bildern mit ImageDataGenerator
Python-Protokoll mit GAE an die Konsole ausgeben
Konvertieren Sie Excel-Daten mit Python in JSON
Konvertiere Hiragana mit Python (Beta) in Romaji
Fraktal zum Erstellen und Spielen mit Python
Ich wollte ABC160 mit Python lösen
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
So arbeiten Sie mit BigQuery in Python
[Einführung in Python] Verwenden wir foreach mit Python
Einzelpixel-Kamera zum Erleben mit Python
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
So zeigen Sie Python-Japanisch mit Lolipop an
Versuch, SQLite3 mit Python zu handhaben [Hinweis]