#include<iostream>
using namespace std;
char *reverse(char *str)//非递归方式
{
if(str!=NULL)
{
int length = strlen(str);
for(int i=0;i<length/2;++i)
{
char temp=str[i];
str[i]= str[length-1-i];
str[length-1] =temp;
}
printf("%s\n",str);
return str;
}
return NULL;
}
void reversecore(char *str,int left,int right)
{
if(left<right)
{
char temp=str[left];
str[left]=str[right];
str[right]=temp;
reversecore(str,left+1,right-1);
}
}
char *reverse(char *str,int len)//递归方式
{
if(str!=NULL||len<=0)
{
reversecore(str,0,len-1);
}
return NULL;
}
int main()
{
char *p1="Hello World";
char p2[]="Hello World";
char p3[15];
strcpy(p3,"Hello World");
char p4[15]={"Hello World"};
reverse(p2,strlen(p2));
printf("%s\n",p2);
reverse(p3,strlen(p3));
printf("%s\n",p3);
reverse(p4,strlen(p4));
printf("%s\n",p4);
return 0;
}