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:
Code:
#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++;
}
Outentering 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
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.