【发布时间】:2013-02-25 15:10:06
【问题描述】:
我目前正在学习 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';
}
【问题讨论】:
-
代码编译得很好,问题是当我打印 2 个字符串时它没有显示任何字符。
-
s2[] 代表第二个字符串
-
@Lind,该练习是否提到了使用递归函数反转 C 中的字符串可以获得的任何好处,其“字符串”不能轻易返回,因此不太适合该模式?
-
它和你说的一样。使用递归函数不会使程序更快,但它仍然要求使用递归函数进行练习。如果不解决这个练习,我就无法继续。
标签: c string recursion reverse