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

使用recurion打印数组反转的c代码,c,arrays,recursion,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}; r

这段代码是使用递归打印数组的反转 我正在使用从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);
}
#包括
无效递归(int a[])
{
int i=0;

如果(i需要一本好的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]));
}
#包括
无效递归(int a[],int i,int size)
{
如果(i<尺寸-1)
递归(a,i+1,size);
printf(“i=%d arr[%d]=%d\n”,i,i,a[i]);
}
int main()
{
int arr[]={1,2,4,5};
递归(arr,0,sizeof(arr)/sizeof(arr[0]);
}

需要一本好的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]));
}
#包括
无效递归(int a[],int i,int size)
{
如果(i<尺寸-1)
递归(a,i+1,size);
printf(“i=%d arr[%d]=%d\n”,i,i,a[i]);
}
int main()
{
int arr[]={1,2,4,5};
递归(arr,0,sizeof(arr)/sizeof(arr[0]);
}

您的
递归
函数工作不正常。 注意:无论何时调用函数,
参数
都应该是相同的。在代码中,函数的参数是数组,但当您从函数内部调用它时,即
递归
时,您传递的是
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);
}
#包括
无效递归(inta[],inti)
{
int t=i-1;
如果(t>=0)
{
printf(“%d”,a[t]);
返回递归(a,t);
}
}
int main()
{
int arr[]={1,2,4,5};
递归(arr,4);
}

希望这有助于您的
递归
函数工作不正常。 注意:无论何时调用函数,
参数
都应该是相同的。在代码中,函数的参数是数组,但当您从函数内部调用它时,即
递归
时,您传递的是
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);
}
#包括
无效递归(inta[],inti)
{
int t=i-1;
如果(t>=0)
{
printf(“%d”,a[t]);
返回递归(a,t);
}
}
int main()
{
int arr[]={1,2,4,5};
递归(arr,4);
}

希望这能有所帮助

在没有必要的时候为什么要使用递归?简单地用for-looply向后打印,因为这是一个家庭作业练习..只是一个猜测。在没有必要的时候为什么要使用递归?简单地用for-looply向后打印,因为这是一个家庭作业练习..只是一个猜测。