实现倒排一个数组(递归和非递归)

实现程序如下

//这里需要两个参数,数组的地址和数组的大小,可以通过以下代码求得
int main{      
            int reverse_string2();
			char arr[] = "abcdef";  //默认,可自由修改
			int len = 0;
			while (arr[len] != '\0') {
				len++;
			}
			reverse_string2(arr, len);//调用
			//打印实现
			printf("###################################################\n");
			printf("%s\n", arr);
			printf("###################################################\n");
		}


int reverse_string2(char string[], int len) {  //递归
	static int left = -1; //使第一次左移为0;
	 //static的作用是让每次left不会再次被初始化为-1;
	 //而且在第后续递归中也可继续使用,保持left左移
	 //特别要注意这里left在递归的“递”过程中被改变
	 //“归”时已经变了,所以要在递归之前交换变量
	int right = len - 1;
	left++;   //保持left每次递归左移
	if (left < right) {   //我的思路是,先交换头和尾,依次到中间
		string[left] = string[left] ^ string[right];    //这三行相当于交换两个数
		string[right] = string[left] ^ string[right];//
		string[left] = string[left] ^ string[right];// 三行到这
		reverse_string2(string, len-1 );
	}
	return 0;
}
int reverse_string(char string[],int len) {  //迭代
	int left = 0;
	int right = len-1;
	while (left < right) {
		string[left] = string[left] ^ string[right];
		string[right] = string[left] ^ string[right];
		string[left] = string[left] ^ string[right];
		right--;
		left++;
		
	}
	return 0;
}```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值