Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的递归反向数组_C_String_Algorithm_Recursion_Reverse - Fatal编程技术网

C语言中的递归反向数组

C语言中的递归反向数组,c,string,algorithm,recursion,reverse,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 {

下面是我的代码的一部分,我试图递归地反转字符串:

    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。我需要它把绳子完全倒转给奥利。有人能帮忙吗?

因为您交换了数组的第一个和最后一个元素,所以应该递归地 使用剩余的n-2个元素而不是n-1调用函数

我假设代码中的reverseString和reverseAr是
实际上是相同的函数,可能是复制粘贴错误。

既然交换了数组的第一个和最后一个元素,就应该递归地执行
# 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;
}
使用剩余的n-2个元素而不是n-1调用函数

我假设代码中的reverseString和reverseAr是
实际上是相同的函数,可能是复制粘贴错误。

GET正在创建构建块。相反,交换完整的块,一旦它们被递归地交换块的内部。使用调试器查看实际被替换的内容。你会感到惊讶的…你没有在正确的时间停止递归。永远不要使用gets,它甚至不再是最新的标准。gets正在创建构建块。相反,交换完整的块,一旦它们被递归地交换块的内部。使用调试器查看实际被替换的内容。你会感到惊讶的…你没有在正确的时间停止递归。永远不要使用gets,它甚至不再是最新的标准。看起来OP想要字符串的就地反转。看起来OP想要字符串的就地反转。在你的答案中解决了奇数长度字符串的错误,停止条件n@zmo:关于你对现在删除的答案的评论:653421的反面应该是654321,而不是653421。该死,我在周日有阅读障碍:-你的答案中解决了奇数长度字符串的错误,停止条件n@zmo:关于你对现在删除的答案的评论:653421的反面应该是654321,而不是653421。该死,我星期天有诵读困难:-s
# 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;
}