首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-17 
想问一下这道题的递归思路,谢谢要求用一个递归来实现字符串的逆序存储,不另设串存储空间。。我怎么一点儿思

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

 

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

[解决办法]

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

热点排行