J'ai besoin d'une chaîne donnée à imprimer en marche arrière à l'aide de la récursivité. J'ai essayé de modifier le prototype de fonction et la définition en modifiant le type de valeur de retour et la liste des paramètres de la fonction stringreverse. stdout de cela n'imprime rien pour la chaîne inverse et je ne peux pas comprendre pourquoi.
3 Réponses :
Vous n'avez pas de fonction récursive qui génère une chaîne dans l'ordre inverse. En outre, c'est une mauvaise idée lorsqu'une fonction dépend d'une variable globale.
La fonction peut regarder la manière suivante, comme indiqué dans le programme de démonstration ci-dessous. Utilisation de la fonction Vous pourrez émettre une chaîne dans l'ordre inverse dans n'importe quel flux, par exemple dans un fichier. P> La sortie du programme est p> !dlroW olleH
Récursion est une overcilleuse massive pour ce travail. Mais toujours, si besoin d'être, @Vladfrommoscow a donné une excellente réponse à l'aide de la récursivité. Pourrais-je prendre la liberté de suggérer une meilleure solution complètement? Pour plus d'informations sur la façon dont STRREV code> fonctionne, je vous suggère de jeter un coup d'oeil sur
strIV () code> fonction dans C p> p>
ci-dessous sont des fonctions récursives pour inverser une chaîne que les premières impressions ne sont que des impressions et la seconde construction la chaîne dans Revstr code> tampon et renvoyez-la à l'appelant.
void reverse(char *str)
{
if (*str)
{
reverse(str+1);
printf("%c", *str);
}
}
void recrev(char* str, char* revstr, int i)
{
if (*str)
{
recrev(str+1, revstr, i-1);
sprintf(revstr + i, "%c", *str);
}
}
int main()
{
char arr[]="hello";
char revstr[6];
recrev(arr, revstr, 4);
printf("%s",revstr);
return 0;
}
Ce que vous avez écrit n'est pas une fonction récursive en premier lieu. En outre, la récursivité serait une surenche massive pour ce travail. Vous pouvez plutôt utiliser un inverse pour la boucle ou
strRev code>
L'inverse d'une chaîne de 0-Char est elle-même; L'inverse d'une chaîne N-Char est l'inverse de la chaîne (N-1) -CHAR à partir du 2e caractère suivi du 1er caractère.
Je suis toujours en train d'apprendre la récursion. Il semble que j'ai essayé d'utiliser une déclaration itérative pour résoudre le problème. Je continuerais d'essayer.