[蓝桥杯][算法提高VIP]递归倒置字符数组
题目描述
完成一个递归程序,倒置字符数组。并打印实现过程
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
递归逻辑为:
当字符长度等于1时,直接返回
否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入
字符数组长度及该数组
输出
在求解过程中,打印字符数组的变化情况。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
5 abcde
样例输出
ebcda edcba edcba
1 #include <stdio.h> 2 #include <string.h> 3 char str[100]; 4 int len; 5 void deal(char *a,int n) 6 { 7 if(n>=len/2) return ; //递归到中间停止 8 char c=a[n]; 9 a[n]=a[len-n-1]; 10 a[len-n-1]=c; 11 printf("%s\n",a); 12 deal(a,n+1); 13 } 14 void main() 15 { 16 int n; 17 while(~scanf("%d %s",&n,&str)){ 18 len=strlen(str); 19 deal(str,0); //从第一个字符开始 20 printf("\n%s\n",str); 21 } 22 }