c代码使用recurion打印数组的反转

时间:2018-05-27 17:17:29

标签: c arrays recursion

此代码用于使用递归打印数组的反转 我正在使用从main调用的递归函数 输出应为5,4,3,2,1 有人可以帮助调试这个

#include <stdio.h>
void recursion(int a[])
{
    int i=0;

    if(i<5)
    return;

    i++;
    recursion(i);
    printf("%d ",a[i]);

}
int main()
{
    int arr[]={1,2,4,5};
    recursion(arr);
}

2 个答案:

答案 0 :(得分:2)

需要一本好的C书:

#include <stdio.h>
void recursion(int a[], int i, int size)
{
    if(i < size -1)
        recursion(a, i + 1, size);
    printf("i = %d arr[%d] == %d \n",i, i, a[i]);

}
int main()
{
    int arr[] = {1, 2, 4, 5};
    recursion(arr, 0, sizeof(arr) / sizeof(arr[0]));
}

答案 1 :(得分:0)

您的recursion功能无法正常运行。 请注意,无论何时调用函数,parameters都应该相同。在你的函数的代码参数中是数组,但当你从函数内部调用它时,recursion正在传递i

所以,你能做的就是那个

#include <stdio.h>
void recursion(int a[], int i)
{
  int t = i-1;
  if(t>=0)
  {
      printf("%d ",a[t]);
      return recursion(a, t);
  }

}
int main()
{
    int arr[]={1,2,4,5};
    recursion(arr,4);
}

希望有帮助