您的位置:首页 > 其它

C程序设计语言之递归倒置字符串

2013-04-24 15:15 239 查看
一、自我实现版本

#include <stdio.h>

void reverse(char* s,int len)

{

if(len == 2 || len == 3) {

char tmp;

tmp = s[0];

s[0] = s[len - 1];

s[len - 1] = tmp;

}

else {

int split = len / 2;

char tmp;

char* s1 = s;

char* s2 = s + split;

reverse(s1,split);

reverse(s2,len - split);

for(int i = 0; i < split; i++) {

tmp = s[0];

for(int j = 0; j < len - 1; j++)

s[j] = s[j + 1];

s[len - 1] = tmp;

}

}

}

int main()

{

char string[10] = "abcdef";

int count = 0;

while(string[++count] != '\0');

reverse(string,count);

printf("%s\n",string);

return 0;

}

二、倒置输出版本

void reverse(char *s)

{

if(*s)

reverse(s+1);

else

return;

cout<< *s;

}

三、首尾逐渐递归版本

void recur(char *c,int k){

char tmp;

if(k>1){

recur(c+1,k-2);

tmp=c[0];

c[0]=c[k-1];

c[k-1]=tmp;

}

}

int main()

{

char *c="abcdefg";

int k=strlen(c);

recur(c,k);

puts(c);

getch();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: