分类：电脑/网络-程序设计-C/C++
问题：C++编程问题编写函数reverse(char*s),用递归算法 
编写reverse(char *s),用递归算法使字符串s倒序.
回答：这是一个很的问题，具体的实现方法取决于你题目的要求1. 如果只是要求逆序输出，那么可以采用类似的方法:void reverse(char *s){  if(*s=='\0')    return;  reverse(s+1);  printf("%c",*s);}这种方法在s很长的情况下会一直递归到底，不是很好。2. 如果需要将字符串整个逆序在函数外面输出，那么可能希望采用返回字符串指针的方式;实现如下：char * reverse( char* s ){  static char *p = s+strlen(s)-1; //p是一个静态变量，指向当前递归层处理的字符串尾，而s指向字符串头   if(s < p)  {　　char c = *p; //交换头尾字符　  *p = *s;   　*s = c;    p--;  //尾向前挪一个    reverse(s+1); //相当于头向后挪一个  }  return s;}3.1 当然，有的时候，并不需要reverse函数本身递归，而是可以借助一些辅助的递归函数，比如说:void reversehelp(char * head, char * end){    if (head < end)    {         char  c = *head;         *head = *end;         *end  = c;         reversehelp(++head, --end);    }}然后在调用时像这样调用:char * reverse(char * s){    char * end = s + strlen(s) - 1;    reversehelp(s, end);    return s;}3.2 类似的辅助函数还可以采用一个字符串指针和一个长度参数的方式，如下例:void reversehelp( char* s, int n ){  if ( n > 1 )  {    char c = s[n-1];    s[n-1] = s[0];    s[0] = c;    reversehelp( s+1, n-2 );  }}然后在调用时如下:char *reverse(char *s){    reversehelp( s, strlen(s) );    return s;}