一、自我实现版本
#include <stdio.h>
void reverse(char* s,int len)
{
if(len == 2 || len == 3) {
char tmp;
tmp = s[0];
s[0] = s[len - 1];
s[len - 1] = tmp;
}
else {
int split = len / 2;
char tmp;
char* s1 = s;
char* s2 = s + split;
reverse(s1,split);
reverse(s2,len - split);
for(int i = 0; i < split; i++) {
tmp = s[0];
for(int j = 0; j < len - 1; j++)
s[j] = s[j + 1];
s[len - 1] = tmp;
}
}
}
int main()
{
char string[10] = "abcdef";
int count = 0;
while(string[++count] != '\0');
reverse(string,count);
printf("%s\n",string);
return 0;
}
二、倒置输出版本
void reverse(char *s)
{
if(*s)
reverse(s+1);
else
return;
cout<< *s;
}
三、首尾逐渐递归版本
void recur(char *c,int k){
char tmp;
if(k>1){
recur(c+1,k-2);
tmp=c[0];
c[0]=c[k-1];
c[k-1]=tmp;
}
}
int main()
{
char *c="abcdefg";
int k=strlen(c);
recur(c,k);
puts(c);
getch();
}