suivant: Exercice 7 - Itérateurs
monter: Itérateurs
précédent: Exercice 5 - Applications
Table des matières
Dans les questions précédentes, l'itérateur faisait décroître de
à chaque appel récursif. Soit la fonction à itérer et la
valeur en , nous pouvons définir un tel itérateur de
la sorte :
Nous étendons une telle fonction en ajoutant en paramètre une fonction
de décrément , on obtient :
-
-
.
- Implémentez la fonction
en en
utilisant le prototype suivant unsigned long applyFD(int
(*delta)(int k), unsigned long (*f)(couple), int n, unsigned long
x).
- Ecrivez une fonction telle que
, vous utiliserez la relation de récurrence
et
et poserez
.
- Prouvez que
- Ecrivez en C la fonction unsigned long
slowPuissanceIT(unsigned long b, unsigned long n), vous
utiliserez applyFD et traduirez en C les fonctions et
définies dans la question préccédente.
- Ecrivez deux fonctions et telles que
- Prouvez que
- Ecrivez en C la fonction unsigned long
fatorielleIT(unsigned long b, unsigned long n), vous
utiliserez applyFD.
- Ecrivez une fonction récursive
calculant
sans utiliser d'itérateur, vous utiliserez le fait que
si est pair et
sinon.
- Traduisez-là en C en utilisant le prototype suivant unsigned
long fastPuissance(unsigned long b, unsigned long n).
- Majorez le nombre d'appels récursifs en fonction de , est-ce
performant ?
- Ecrivez la fonction et la fonction de sorte que
. Notez le fait que prend le
couple en paramètre.
- Prouvez par récurrence la validité de
.
- Ecrivez en C la fonction unsigned long
fastPuissanceIT(unsigned long b, unsigned long n), vous
utiliserez la fonction applyFD.
suivant: Exercice 7 - Itérateurs
monter: Itérateurs
précédent: Exercice 5 - Applications
Table des matières
klaus
2010-08-05