Hello All,
I have written a program to reverse a string using recursion. Have tried to dry run it , debug it but still can't find the issue. Below is my code:
Outentering reverseCode:#include <stdio.h> #include <string.h> #include <stdlib.h> void reverse(char *,char *); int main() { char input[] = "Keshav"; char * reversed = (char *)malloc(strlen(input) +1 ); reverse(input,reversed); puts(reversed); return 0; } void reverse(char * input,char *reversed) { puts("entering reverse"); static int i = 0; while(*++input != '\0') reverse(input,reversed); reversed[i] = *--input; reversed[i+1] = '\0'; i++; }
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
entering reverse
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
I am not able to understand why is it entering reverse more than string-length("Keshav") times. Also when I try to debug the local variable input is always pointing to "v" but it should not as every call to reverse must have it's own pointer.
Request anybody to help.
This my first post and pardon me if I have done any mistake.



2Likes
LinkBack URL
About LinkBacks




-- the analogy would be closing your eyes, putting your hand on the first block, then moving your hand along until you feel the last block, swapping them, then moving your hands in by one and swapping again until your hands touch. Technically, you never have to know exactly how long the row of blocks is.