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

本文介绍了三种使用C语言实现字符串翻转的方法:自我实现版本通过递归和拆分字符串来达到目的;倒置输出版本通过递归输出字符顺序;首尾逐渐递归版本通过递归交换首尾字符实现翻转。所有方法都通过实例代码进行了展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、自我实现版本

#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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值