当前位置:网站首页>【C】逆序字符串(俩种递归思路)
【C】逆序字符串(俩种递归思路)
2022-07-28 22:06:00 【XIN-XIANG荣】
博客主页: XIN-XIANG荣
系列专栏:【从0到1,C语言学习】
一句短话:你若盛开,蝴蝶自来!
博客说明:尽己所能,把每一篇博客写好,帮助自己熟悉所学知识,也希望自己的这些内容可以帮助到一些在学习路上的伙伴,文章中如果发现错误及不足之处,还望在评论区留言,我们一起交流进步!
前言
很简单的逆序字符串实现,记录一种不容易想到的递归思路!
实现要求:
将参数字符串中的字符反向排列,不是逆序打印。
比如:
char arr[ ] = “abcdef”;
逆序之后数组的内容变成:fedcba
思路1:
抓住递归的核心思想将事件大事化小,要将整个字符串逆序,可以先将字符串中的首字符和末字符交换,再将中间的字符串再逆置;
而中间的字符串可以再次用上面的思路递归,直到首尾符的中间再没有字符串;

要想将中间的内容再当成一个字符串进行递归,就需要在其后在其后放置一个\0,而因为要放置这个\0,首字符就无法放置在字符串末尾完成交换,此时可以将这个字符用一个中间变量存储起来,等到中间的字符串递归完成逆序后,再将存储起来的首字符放到末字符的位置。

#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char* str)
{
assert(str);
char tmp = *str;
int len = strlen(str);
*str = *(str + len - 1);
*(str+len - 1) = '\0';
if (my_strlen(str + 1) >= 2)
{
reverse(str + 1);
}
*(str + len - 1) = tmp;
}
int main()
{
char arr[] = "abcdefg";
reverse(arr);
printf("%s\n", arr);
return 0;
}
思路2:
实现一个递归函数将字符串俩俩交换即可。

#include<stdio.h>
#include<assert.h>
#include<string.h>
void reverse(char arr[], int left, int right)
{
assert(arr);
if (left < right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
reverse(arr, left + 1, right - 1);
}
}
int main()
{
char arr[] = "abcdefg";
int left = 0;
int right = strlen(arr)-1;
reverse(arr, left, right);
printf("%s\n", arr);
return 0;
}
结语
各位小伙伴,看到这里就是缘分嘛,希望我的这些内容可以给你带来那么一丝丝帮助,可以的话三连支持一下呗!!! 感谢每一位走到这里的小伙伴,我们可以一起学习交流,一起进步!!!加油!!!

边栏推荐
- 深度之眼(十八)——偏导数
- 多传感器融合定位(一)——3D激光里程计
- Worthington丨Worthington胰蛋白酶化学性质及相关研究
- Explanation of history and chemical properties of Worthington ribonuclease B
- 使用Pytorch快速训练网络模型
- field injection is not recommended 的解决办法
- 器利而工善,以RPA+LCAP赋能企业司库管理数字化升级
- Jincang database kingbasees client programming interface guide ODBC (5. Development process)
- 【CNN】为什么CNN的卷积核大小一般都是奇数
- 多传感器融合定位(二)——基于地图的定位
猜你喜欢

Compose 的声明式代码如此简洁?

Solve thread safety problems & singleton mode
![[detailed and super simple] how to use websocket links](/img/bf/5068f84e0d81a8330529cc4d7d5d27.png)
[detailed and super simple] how to use websocket links

深度之眼(十八)——偏导数

智能垃圾桶(七)——SG90舵机的介绍与使用(树莓派pico实现)

Use pytoch to quickly train the network model

PHP 海报二维码合成

field injection is not recommended 的解决办法

Uricase - Characteristics of uricase in Worthington pig liver:

剑指 Offer 55 - I. 二叉树的深度
随机推荐
Zibo station construction guide (aigler)
2022 R2 mobile pressure vessel filling test question simulation test platform operation
My second uncle is angry and swipes the screen all over the network. How can he cure my spiritual internal friction?
(22杭电多校二)Two Permutation (dp),Package Delivery (贪心)
Worthington丨STEMxyme的分类和测定方法
多传感器融合定位(二)——基于地图的定位
多传感器融合定位(一)——3D激光里程计
EN 1873屋面用装配附件.塑料单个屋面灯—CE认证
Blocking queue
宝塔 phpmyadmin未授权访问漏洞
Jincang database kingbasees client programming interface guide ODBC (2. Overview)
2022 welder (Junior) work license questions and answers
pycharm配置运行环境
[detailed and super simple] how to use websocket links
台式机dp接口在哪(主机没有dp接口怎么办)
Deep analysis of integrated learning AdaBoost
多传感器融合定位(三)——惯性技术
Wildcard ssl/tls certificate
数仓:Doris在美团的应用实践
苹果官网正在更新维护 Apple Store,国行 iPhone 13 / Pro 等产品将最高优惠 600 元
