-2
votes

Comment écrivez-vous une fonction récursive pour imprimer une chaîne en sens inverse en C?

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. XXX


3 commentaires

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


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.


3 Réponses :


1
votes

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> xxx pré>

La sortie du programme est p>

!dlroW olleH


0 commentaires

0
votes

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? XXX

Pour plus d'informations sur la façon dont STRREV fonctionne, je vous suggère de jeter un coup d'oeil sur strIV () fonction dans C


0 commentaires

0
votes

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;
}


0 commentaires