我正在嘗試使用遞歸函數在數組中找到最小值數,但是我的代碼給出了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行,但佔用內存少,易於理解,(也)更快。 –