The function
void reverse_string( char *string );
does not allow a recursive solution because void was given as return value.
The best would be to reorder the string in place by exchanging the characters from front to back.
If the function also does the output of single characters you could also write a recursive solution. But then each iteration outputs only one character at a time, not the whole string. This would be very inefficient, since many unnecessary recursions would be necessary and the output of single characters is also very slow.