Python Language Récursion de la queue - Mauvaise pratique


Exemple

Lorsque la seule chose renvoyée par une fonction est un appel récursif, on parle de récursion de queue.

Voici un exemple de compte à rebours écrit en utilisant la récursion de queue:

def countdown(n):
    if n == 0:
        print "Blastoff!"
    else:
        print n
        countdown(n-1)

Tout calcul pouvant être effectué à l'aide d'une itération peut également être effectué en utilisant la récursivité. Voici une version de find_max écrite en utilisant la récursion de la queue:

def find_max(seq, max_so_far):
    if not seq:
        return max_so_far
    if max_so_far < seq[0]:
        return find_max(seq[1:], seq[0])
    else:
        return find_max(seq[1:], max_so_far)

La récursion de la queue est considérée comme une mauvaise pratique en Python, car le compilateur Python ne gère pas l'optimisation des appels récursifs de queue. La solution récursive dans de tels cas utilise plus de ressources système que la solution itérative équivalente.