这是我的代码的一部分,我试图以递归方式反转字符串:
char reverse[10];
gets(reverse);
reverseString(reverse, (strlen(reverse) - 1));
void reverseString(char ar[], int n)
{
if (n == 0)
{
return;
}
else
{
int temp = ar[n];
ar[n] = *(ar);
*(ar) = temp;
reverseString((ar + 1), (n - 1));
}
}
当我输入字符串“hello”时,它将字符串更改为“ohell”。我需要它将字符串完全反转为“olleh”。有人可以帮忙吗?
答案 0 :(得分:5)
由于您交换了数组的第一个和最后一个元素,因此应该递归
使用剩余的n-2
元素(而不是n-1
)调用该函数,
void reverseString(char ar[], int n)
{
if (n <= 0)
{
return;
}
else
{
int temp = ar[n];
ar[n] = *(ar);
*(ar) = temp;
reverseString((ar + 1), (n - 2));
}
}
(我假设你的代码中有reverseString
和reverseAr
实际上是相同的功能,也许是一些复制粘贴错误。)
答案 1 :(得分:0)
# include <stdio.h>
/* Function to print reverse of the passed string */
void reverse(char *str)
{
if(*str)
{
reverse(str+1);
printf("%c", *str);
}
}
/* Driver program to test above function */
int main()
{
char a[] = "Geeks for Geeks";
reverse(a);
getchar();
return 0;
}