此代码用于使用递归打印数组的反转 我正在使用从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);
}
答案 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);
}
希望有帮助