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

本文介绍了一个使用递归方式倒置字符数组的C语言程序。该程序通过调换首尾字符并递归处理中间部分来实现数组的倒置。在求解过程中,程序会输出字符数组变化的情况。

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

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

Sample 1
5 abcde
Sample 2
1 a


样例输出

Sample 1
ebcda
edcba
edcba
Sample 2
a

ebcda
edcba

edcba
*/

#include<stdio.h>
void daozhi(char * ,  int , int , int);
void huan( char * ,  int , int );
int main(void)
{
	int n;
	char zf[100];
	scanf("%d%s" ,&n ,zf);
	daozhi(zf ,  n , n/2 , 0);
	putchar('\n');
	puts(zf);
	return 0;
}
void huan( char * zf ,  int  i , int  j)
{
	int tmp=zf[i];
	zf[i]=zf[j];
	zf[j]=tmp;
}
void daozhi(char * zf,  int p_jw, int p_zj, int p_ks)
{
	if(p_ks==p_zj)
	{
		return ;
	}
	else
	{
		huan( zf , p_ks , p_jw-p_ks-1);
		puts(zf);
		daozhi(zf , p_jw , p_zj , p_ks + 1);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值