Convertir une récursion en boucle
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 6 — Fonctions récursives
Énoncé
Proposer une version récursive de nb_chiffres(n) (calcul du nombre de chiffres d'un entier ), puis, à l'inverse, convertir la fonction récursive somme_chiffres(n) (somme des chiffres de ) en version itérative à l'aide d'une boucle.
Corrigé
def nb_chiffres(n: int) -> int:
if n < 10:
return 1
return 1 + nb_chiffres(n // 10)
def somme_chiffres(n: int) -> int:
s = 0
temp = n
while temp > 0:
s += temp % 10
temp //= 10
return s if n > 0 else 0
Ces fonctions sont de nature récursive terminale (un seul appel de fonction en fin de parcours). La conversion en boucle est triviale et élimine tout risque de débordement de pile (RecursionError), ce qui s'avère indispensable en présence de très grandes valeurs de .
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.