算法提高: 递归倒置字符数组(递归)

问题描述
  完成一个递归程序,倒置字符数组。并打印实现过程
  递归逻辑为:
  当字符长度等于1时,直接返回
  否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入格式
  字符数组长度及该数组
输出格式
  在求解过程中,打印字符数组的变化情况。
  最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
Sample 1
5 abcde
Sample 2
1 a

 样例输出

 

Sample 1
ebcda
edcba
edcba
Sample 2
a

 注意:puts函数会自动换行

复制代码
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void swap(int a, int b, char* s)
 5 {
 6     char temp = s[a];
 7     s[a] = s[b];
 8     s[b] = temp;
 9 }
10 
11 void fun(int start, int mid, int end, char *s)
12 {
13     if (start == mid)
14     {
15         return 0;
16     }
17     else
18     {
19         swap(start, end - start - 1, s);
20         puts(s);
21         fun(start + 1, mid, end, s);
22     }
23 }
24 
25 int main(void)
26 {
27     int len;
28     char *s;
29     int i;
30 
31     scanf("%d", &len);
32     getchar();
33     s = (char *)malloc(sizeof(char)*len);
34     memset(s, 0, len);
35     gets(s);
36 
37     fun(0,len/2,len, s);
38     printf("%s", s);
39 
40     return 0;
41 }
复制代码

 

posted @   Xxaj5  阅读(525)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示