Maison >développement back-end >Tutoriel Python >Python optimise-t-il la récursion de queue, et sinon, pourquoi ?

Python optimise-t-il la récursion de queue, et sinon, pourquoi ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-03 21:18:12443parcourir

Does Python Optimize Tail Recursion, and If Not, Why?

Python optimise-t-il la récursion de la queue ?

Python n'optimise pas la récursion de la queue, comme l'a explicitement déclaré son créateur, Guido van Rossum. Rossum donne la priorité aux traçages appropriés plutôt qu'à l'optimisation potentielle de la récursion de queue.

Pourquoi Python n'optimise pas la récursion de queue

Rossum estime qu'il est plus important de maintenir la capacité de générer des traçages précis que d'optimiser la récursivité de la queue. Les traçages sont essentiels pour le débogage et la compréhension de la manière dont le code est exécuté.

Élimination manuelle de la récursion de queue

Malgré le manque d'optimisation de la récursion de queue de Python, vous pouvez éliminer manuellement la récursion à l'aide d'une transformation . Convertissez la fonction récursive en boucle while et mettez à jour les paramètres dans la boucle au lieu d'utiliser la récursion de queue.

Exemple : élimination de la récursion de queue

def trisum(n, csum):
    while True:                     # Change recursion to a while loop
        if n == 0:
            return csum
        n, csum = n - 1, csum + n   # Update parameters instead of tail recursion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn