mib*_*456 1 c string algorithm recursion reverse
这是我的代码的一部分,我试图以递归方式反转字符串:
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));
}
}
Run Code Online (Sandbox Code Playgroud)
当我输入字符串"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));
}
}
Run Code Online (Sandbox Code Playgroud)
(我假设reverseString
,并reverseAr
在你的代码实际上是相同的功能,或许有些复制粘贴错误.)