Date création : 12-01-2008 11:38:24 Date de la dernière modification : 16-01-2008 21:03:20
 Vous êtes dans : Langage C Astuces / Récursivité - Exercices
Enoncé :
Calculer la longueur d'une chaîne de caractères.
Solution :
#include<stdio.h>
#define MAX 255
int strlen_recursif (char *s,int longueur);
int main ()
{
char s[MAX];
char ss[] ="";
printf ("Entrez une chaine de caractères :");
fgets (s, MAX, stdin);
printf ("%d\n", strlen_recursif (s,0));
return 0;
}
int strlen_recursif (char *s,int longueur){
if (*s == '\0')
return longueur;
return strlen_recursif (s + 1,longueur + 1);
}
|
Explication :La fonction a 2 paramètres. Le 1er c'est la chaîne de caractères et le 2ème c'est la longueur qui, à l'initialisation, vaut zéro.
Nous utililserons le pointeur s qui est l'adresse du 1er élément de la chaîne de caractères. Dans l'appel récursif nous incrémentons le pointeur ainsi que la longueur qui au début vaut 0, donc nous sommes au 2ème élément de la chaîne et longueur 1, et ainsi de suite.
Si le pointeur contient '\0', nous sommes à la fin de la chaîne et nous ne comptons pas le caractère '\0'. La fonction retourne la longueur.
Sinon nous incrémentons le pointeur avec 1 (pour un caractère rencontré) et nous incrémentons aussi la longueur d'une unité.
|