读书人

想问一下这道题的递归思路多谢

发布时间: 2012-02-17 17:50:42 作者: rapoo

想问一下这道题的递归思路,谢谢
要求用一个递归来实现字符串的逆序存储,不另设串存储空间。。



我怎么一点儿思路都没有呀

[解决办法]

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 }   ~ 

读书人网 >C语言

热点推荐