Files
TermNSI/Recursivité/Exercices_Recursivité.md

41 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Exercices Récursivité
---
## Exercice 1 : Exponentiation rapide
On rappelle que l'exponentiation rapide permet de calculer le nombre a<sup>n</sup> en utilisant les relations de récurrence suivantes :
- a<sup>0</sup> = 1
- Si n est pair : a<sup>n</sup> = (a × a)<sup>n/2</sup>
- Sinon : a<sup>n</sup> = a × (a × a)<sup>(n-1)/2</sup>
**Questions :**
1. Écrire une version récursive de l'exponentiation rapide.
2. Écrire une version itérative de l'exponentiation rapide.
---
## Exercice 2 : Liste décroissante
Écrire une fonction récursive d'argument `n` qui génère la liste suivante :
```python
[n, n-1, ..., 1, 0]
```
---
## Exercice 3 : Multiplication égyptienne
La multiplication égyptienne, dite aussi du paysan russe, était utilisée par les scribes dès l'Antiquité. Elle ne nécessite pas la connaissance des tables de multiplication, seulement l'addition et la division par deux.
On multiplie deux entiers, *a* et *b* de la manière suivante : on divise *a* par 2 tant que c'est possible, en doublant *b*, sinon on décrémente *a* et on ajoute *b* au résultat.
**Questions :**
1. Utiliser cette technique pour calculer le produit *a* × *b* avec *a* = 13 et *b* = 61.
2. Écrire une fonction récursive qui calcule le produit de *a* et *b* en utilisant la multiplication égyptienne.
3. Quelle est la complexité de cet algorithme en fonction de *a* ?