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