Suggerimenti per la ricorsione della coda chiamata in Python [duplicato]

4

Ok, Python non ha ottimizzazione delle chiamate tail.

Ma per coloro che pensano in modo ricorsivo meglio di "in loop", quali sono le migliori pratiche per scrivere codice ??

1000 richieste di stack sono sufficienti per molti casi, ma quali sono i suggerimenti per nascondere la ricorsione con l'efficienza in Python?

    
posta Lucas Ribeiro 22.10.2013 - 21:38
fonte

1 risposta

7

Bene, se stai scrivendo algoritmi ricorsivi di coda, probabilmente stai facendo qualcosa del genere

 def my_algo(whatever)
   if some_condition:
       return foo
   ...
   return my_algo(bar)

Poiché la chiamata a my_algo è necessariamente l'ultima cosa da restituire, è piuttosto semplice tradurre questo in

 def my_algo(whatever)
   while some_condition:
       ...
       whatever = bar
   return whatever

In pratica, questo è in pratica ciò che accade con l'ottimizzazione delle chiamate tail nella maggior parte dei compilatori.

    
risposta data 22.10.2013 - 21:50
fonte