Faculté des Sciences de Luminy
Algorithmique et programmation en langage C
Série d’exercices n° 6
Fichier « TD 06.doc » (état du 26/09/2012 à 10:46)
Fonctions récursives
1
Ecrivez une fonction récursive qui calcule XN pour X réel quelconque et N entier positif ou nul. Mettez à profit la
remarque suivante :
( )
1
22
1, si 0
et, si est impair, 1 est pair
et, si est pair, est entier
2
N
N
N
N
X X N N
XN
X N
−
=
× −
=
2
Le nombre de combinaisons
p
n
C
de p objets parmi n peut être calculé par l’expression récursive suivante (qui définit le
triangle de Pascal) :
<<+
==
=
−
−
−
sinon ,0
0 si ,
ou 0 si ,1
1
1
1
npCC
npp
C
p
n
p
n
p
n
Ecrivez une fonction récursive qui calcule
p
n
C
en fonction de n et p.
3
Une chaîne de caractères est un palindrome si elle a moins de deux caractères ou si son premier et son dernier caractères
sont identiques et la sous-chaîne obtenue en les retirant est elle aussi un palindrome : esoperesteicietserepose. Ecrivez
de façon itérative, puis récursive, la fonction
int palindrome(char *s, int debut, int fin)
qui rend 1 si la suite de caractères s
début
, s
début+1
, … s
fin
constitue un palindrome, 0 sinon.
4
A. Ecrivez la fonction récursive
void miroir(void)
qui lit caractère par caractère (par exemple, en utilisant la
fonction
getchar()
) une chaîne terminée par ‘?’ et l’affiche dans l’ordre inverse de celui de la lecture. Exemple
d’utilisation :
main() {
miroir();
}
Exemple d’exécution de ce programme :
Miroir, qui est la plus belle ?
? elleb sulp al tse iuq ,rioriM
B. Ecrivez une version sans variable locale de la fonction
miroir
.
5
Ecrivez une fonction
void ecriture(int nombre, int base);
qui affiche à l’écran l’expression du
nombre
indiqué dans la
base
indiquée. On supposera que
nombre
est positif ou
nul. Dans une première étape, intéressez-vous au cas où la base est 10.