用递归法实现字符串反转,字符逆序输出递归
文章目录前言一、左右指针(非递归实现)1.引入代码二、使用指针解决(递归)1.引入代码三、数组左右指针(递归实现)总结前言之前我遇到这个题也是没有思路,但是在博客中找,也没有找到自己想要的方法,现在我懂了三种方法,接下来依次写出来
注意题目要求(反向排列不是逆序打印)
题目如下
一、左右指针(非递归实现)
1.引入代码#define _CRT_SECURE_NO_WARNINGS
#包含标准视频
void print(char arr[],int sz)
{
for(int I=0;我SZ;我)
{
printf(%c ,arr[I]);
}
printf( \ n );
}
void Swap(char arr[],int sz) {
int left=0;
int right=SZ-1;
而(左=右)
{
char tmp=arr[left];
arr[left]=arr[right];
arr[right]=tmp;
左;
右-;
}
}
int main() {
char arr[]= abcdefg ;
int SZ=strlen(arr);
Swap(arr,SZ);
打印(arr,SZ);
返回0;
}
二、使用指针解决(递归)
1.引入代码#define _CRT_SECURE_NO_WARNINGS
#包含标准视频
void print(char arr[],int sz)
{
for(int I=0;我SZ;我)
{
printf(%c ,arr[I]);
}
printf( \ n );
}
//求字符串长度
int my_strlen(char* str) {
int count=0;
while (*(str)!=\0)
{
数数;
潜艇用热中子反应堆(submarine thermal reactor的缩写)
}
返回计数;
}
void reverse_string(char* str)
{
char tmp=* str
int SZ=my _ strlen(str);
* str=*(str SZ-1);
*(str SZ-1)= \ 0 ;
如果(sz=2)
reverse _ string(str 1);
*(str SZ-1)=tmp;
}
int main() {
char arr[]= abcdefg ;
int SZ=my _ strlen(arr);
反向字符串(数组);
打印(arr,SZ);
返回0;
}
三、数组左右指针(递归实现)第三种方法和第一种相似
但是需要对传入的参数进行参加
看代码
#define _CRT_SECURE_NO_WARNINGS
#包含标准视频
void print(char arr[],int sz)
{
for(int I=0;我SZ;我)
{
printf(%c ,arr[I]);
}
printf( \ n );
}
//求字符串长度
int my_strlen(char* str) {
int count=0;
while (*(str)!=\0)
{
数数;
潜艇用热中子反应堆(submarine thermal reactor的缩写)
}
返回计数;
}
void reverse_string(char arr[],int left,int right)
{
char tmp=arr[left];
arr[left]=arr[right];
arr[right]=tmp;
如果(左=右)
reverse_string(arr左1,右-1);
}
int main() {
char arr[]= abcdefg ;
int SZ=my _ strlen(arr);
reverse_string(arr,0,SZ-1);
打印(arr,SZ);
返回0;
}
总结例如:以上就是今天要讲的内容,本文仅仅简单介绍了关于字符串逆序的递归和非递归方法,有问题可以评论留言哦!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。