我正在尝试使用递归函数在数组中找到最小值数,但是我的代码给出了segemtation错误。为什么下面的代码给出了分段故障问题?
main()
{
int a[5]={2,1,4,5,3};
int n=1;
fumi(a,n,a[0],5);
}
fumi(int a[],int n,int min,int t)
{
if(n==t)
{
printf("%d",min);
}
if(a[n]<min)
{
min=a[n];
}
return(fumi(a,n+1,min,t));
}
在哪里做错了,也主要是没有返回任何东西是不是故障的原因。
注:作为一个练习递归,这可能是有趣的,但在实际的程序,这是不好的_extremely_理念。 –
这将是一个坏主意? –
当你想排序'a [10000]'(不知道数字),你会让你的程序崩溃(通过http://en.wikipedia.org/wiki/Stack_overflow),除非编译器删除递归作为优化。虽然非递归函数占用5行,但占用内存少,易于理解,(也)更快。 –