How to reverse a string using recursion in C

3 Answers

0 votes
#include <stdio.h>
#include <string.h>
 
void reverse_recursion(char s[], int index, int size) {
    char tmp;
     
    tmp = s[index];
    s[index] = s[size - index];
    s[size - index] = tmp;
     
    if (index == size / 2) {
        return;
    }
    
    reverse_recursion(s, index + 1, size);
}
 
int main(void) {
    char s[16] = "C programming";
 
    reverse_recursion(s, 0, strlen(s) - 1);
     
    puts(s);
 
    return 0;
}

 
 
/*
run:
 
gnimmargorp C
 
*/

 



answered Jan 16, 2021 by avibootz
edited Apr 26, 2024 by avibootz
0 votes
#include <stdio.h>
#include <string.h>
 
char* reverse_recursion(char* s) {
    char tmp;
 
    if (strlen(s) <= 1) {
        return s;
    }
 
    tmp = *s;
    strcpy(s, reverse_recursion(s + 1));
    *(s + strlen(s)) = tmp;
 
    return s;
}
 
int main(void) {
    char s[16] = "C programming";
     
    reverse_recursion(s);
 
    puts(s);
 
    return 0;
}

 
 
/*
run:
 
gimmmargorp C

*/

 



answered Jun 2, 2023 by avibootz
edited Apr 26, 2024 by avibootz
0 votes
#include <stdio.h>
#include <string.h>
 
char* reverse_recursion(char s[], int index, int size) {
    if(index < size && size > 1) {
        char temp = s[index];
        s[index] = s[size - 1];
        s[size - 1] = temp;
 
        reverse_recursion(s, ++index, --size);  
    }
}
 
int main(void) {
    char s[16] = "C programming";
     
    reverse_recursion(s, 0, strlen(s));
 
    puts(s);
 
    return 0;
}


 
 
/*
run:
 
gimmmargorp C

*/

 



answered Apr 26, 2024 by avibootz

Related questions

...