J'ajouterais un détail. La tail queue récursion n'est utilisable que pour les algos où l'appel recursif est la dernière chose effectuée dans ce programme. Ce n'est pas le cas de la plupart des algorithmes récursifs. Et pour ceux pour lequel c'est le cas, ils peuvent tous très facilement s'écrire avec une boucle while.
Après, pour la plupart des algorithmes récursifs non terminaux, et bien tous les langages auront le même problème de stack, sauf les langages/implémentations qui n'utilise pas le C stack et alloue leurs stack sur le tas, ce qui ne fait que repousser le problème plus loin.
[^] # Re: Pourquoi les gens critiquent toujours python avec de mauvais argumen
Posté par Guillaum (site web personnel) . En réponse au journal Journal inutile : Python c'est complêtement pourri, j'ai un exemple. Évalué à 1.
def func(args):
if stop_condition(args):
return stop_value(args)
args = do_something(args)
return func(args)
def func(args):
while not stop_condition(args):
args = do_something(args)
return stop_value(args)
Ce qui donne pour la factorielle :
def fact(n):
accum = 1
while n >= 1:
accum *= n
n -= 1
return accum
voir plus simple ;)
def fact(n):
return reduce(int.__mul__, range(1, n+1))
Après, pour la plupart des algorithmes récursifs non terminaux, et bien tous les langages auront le même problème de stack, sauf les langages/implémentations qui n'utilise pas le C stack et alloue leurs stack sur le tas, ce qui ne fait que repousser le problème plus loin.