这是我的代码的一部分,我在其中尝试递归地反转字符串:
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”。有人可以帮忙吗?
最佳答案
既然你交换了数组的第一个和最后一个元素,你应该递归
使用剩余的 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
是
实际上是相同的功能,也许是一些复制粘贴错误。)
关于c - 递归地反转C中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128012/