gpt4 book ai didi

c - 使用递归函数反转字符串

转载 作者:行者123 更新时间:2023-12-04 12:14:28 25 4
gpt4 key购买 nike

我目前正在学习 C,我无法通过这个练习。我必须创建一个递归函数来将 string1 反转为 string2。这是我的代码。非常感谢您的帮助。

#include <stdio.h>
#define MAX 100

void reverse(char s1[],char s2[],int n,int j);

int main()
{
char string1[MAX]="How Are You Mate";
char string2[MAX]="";
int n=0;
int i=0;
int j=0;

for(i=0;string1[i]!='\0';i++)
n++;
reverse(string1,string2,n,j);
printf("String-a normal:\n%s\n",string1);
printf("String-a reverse:\n%s\n",string2);
return 0;
}

void reverse(char s1[],char s2[],int n,int j)
{
if(n>0)
{
s2[j]=s1[n];
reverse(s1,s2,n-1,j+1);
}
else
s2[j]='\0';
}

最佳答案

就地(调用者可以在调用此函数之前复制字符串)尾递归字符串反转

void reverse (char *str, size_t len)
{
char tmp;
if (len-- < 2) return;

tmp = *str;
*str = str[len];
str[len] = tmp;

reverse (str+1, len -1);
}

哦,如果你不想要指针:

void reverse (char str[], size_t len)
{
char tmp;
if (len-- < 2) return;

tmp = str[0];
str[0] = str[len];
str[len] = tmp;

reverse (str+1, len -1);
}

关于c - 使用递归函数反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com