递归地反转C中的数组

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".有人可以帮忙吗?

Mar*_*n R 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));
    }
}
Run Code Online (Sandbox Code Playgroud)

(我假设reverseString,并reverseAr在你的代码实际上是相同的功能,或许有些复制粘贴错误.)