C语言递归实现字符串逆序的方式详解
什么是递归
递归(Recursion)就是在程序执行时调用自身的编程技巧。递归函数就是能够直接或间接地调用自己的函数。
递归实现字符串逆序
我们可以通过递归实现字符串的逆序。具体思路是将最后一个字符与前面的字符逐个交换,直至所有字符都被交换。
下面是具体实现的代码:
void reverse(char *str, int start, int end)
{
char temp;
if(start >= end) // 如果只剩下1个或0个字符,则递归结束
return;
temp = *(str+start); // 记录左边的字符,然后交换左右两个字符的位置
*(str+start) = *(str+end);
*(str+end) = temp;
reverse(str, ++start, --end); // 递归交换其它字符
}
示例如下
比如我们要将字符串"Hello World!"
反转,代码如下:
#include<stdio.h>
#include<string.h>
void reverse(char *str, int start, int end) // 递归实现字符串逆序
{
char temp;
if(start >= end)
return;
temp = *(str+start);
*(str+start) = *(str+end);
*(str+end) = temp;
reverse(str, ++start, --end);
}
int main()
{
char str[] = "Hello World!";
int len = strlen(str);
reverse(str, 0, len-1);
printf("%s\n", str);
return 0;
}
输出结果为:
!dlroW olleH
再比如我们要将字符串"12345"
反转,代码如下:
#include<stdio.h>
#include<string.h>
void reverse(char *str, int start, int end)
{
char temp;
if(start >= end)
return;
temp = *(str+start);
*(str+start) = *(str+end);
*(str+end) = temp;
reverse(str, ++start, --end);
}
int main()
{
char str[] = "12345";
int len = strlen(str);
reverse(str, 0, len-1);
printf("%s\n", str);
return 0;
}
输出结果为:
54321
总结
递归实现字符串逆序的过程中,我们必须要有开始和结束的位置,否则会进入无限循环,导致程序崩溃。递归函数的实现要注意结束条件和递归条件的设置。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言递归实现字符串逆序的方式详解 - Python技术站