Une fonction récursive fait appel à elle-même.
Pour un entier naturel n non nul, n! est la factorielle de n. C'est le produit des entiers de 1 à n.
Exemples :
3! = 3$\times$2$\times$1 = 6
5! = 5$\times$4$\times$3$\times$2$\times$1 = 120
1! = 1
def factorielle(n):
assert n>=1, "Entrer un entier !" #si on entre un nombre <1 , un message d'erreur est envoyé
if n == 1:
return 1
else:
return n*factorielle(n-1)
factorielle(5), factorielle(3),factorielle(1)
On dépose chaque mois dans une tirelire 10 euros de plus que le mois précédent. Le premier mois, le versement s'élève à 30 euros. Au bout de combien de mois la tirelire contiendra-t-elle plus de 10 000 euros ?
Ecrire une fonction récursive versement(n) qui prend en paramètre le numéro du mois et retourne le versement effectué ce mois-là.
def versement(n):
if n == 1:
return 30
return versement(n-1) +10
versement(2), versement(3), versement(10)
Résoudre le problème posé.
tirelire = 30
mois = 1
while tirelire <= 10000:
tirelire = tirelire + versement(mois)
mois = mois +1
print(mois-1)
vérification : on doit résoudre $30 + 40 + 50 + \dots + (30+10n) \geqslant 10000$, soit
$(n+1) \times \dfrac{30 + 30+10n}{2} \geqslant 10000$
C'est une équation du second degré qui s'écrit :
$5n^2 + 35 n -9970 \geqslant 0$
La solution est $n \geqslant 42$. Comme le premier mois est le mois obtenu pour $n=0$, on dépasse 10000 au 43ème mois.
Ecrire une fonction récursive puissance_recursive($a, n$) qui prend en paramètres deux entiers naturels et retourne $a^n$
def puissance_recursive(a,n):
if n ==0:
return 1
return a*puissance_recursive(a,n-1)
puissance_recursive(2,10)
Rechercher des situations où on peut utiliser une fonction récursive.