想问一下这道题的递归思路,谢谢
要求用一个递归来实现字符串的逆序存储,不另设串存储空间。。
我怎么一点儿思路都没有呀
[解决办法]
- C/C++ code
static void swap(char *a, char *b, size_t n){ while (n--) { *a ^= *b; *b ^= *a; *a ^= *b; a++; b++; }} void my_memrev(char *s, size_t n){ switch (n) { case 0: case 1: break; case 2: case 3: swap(s, s + n - 1, 1); break; default: my_memrev(s, n / 2); my_memrev(s + ((n + 1) / 2), n / 2); swap(s, s + ((n + 1) / 2), n / 2); break; }} void reverse(char *s){ char *p; for (p = s; *p; p++) ; my_memrev(s, (size_t)(p - s));}
[解决办法]
- C/C++ code
1 #include<stdio.h> 2 #include<string.h> 3 4 void reverse(int i,int j,char p[]){ 5 if((j-i)%2 != 0 && i+1 == j) 6 return ; 7 if((j-i)%2 == 0 && i == j) 8 return ; 9 10 reverse(i+1,j-1,p); 11 char t = p[i]; 12 p[i] = p[j]; 13 p[j] = t; 14 } 15 16 int main(){ 17 18 char p[] = "abcdef"; 19 reverse(0,5,p); 20 printf("%s\n",p); 21 } ~