c - 为什么下面的代码会出现段错误问题?

标签 c recursion

我正在尝试使用递归函数在数组中找到最小数字。但是我的代码给出了分割错误。

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));
}

哪里做错了,而且 main 没有返回任何东西都不是段错误的原因。

最佳答案

你还应该 returnprintf("%d",min); 之后否则,你检查 if (a[t] < min) , 和 a[t]没有分配。

fumi(int a[],int n,int min,int t)
{
    if(n==t)
    {
        printf("%d",min);
        return; //This line was added
    }
    if(a[n]<min)
    {
        min=a[n];
    }
    return(fumi(a,n+1,min,t));
}

关于c - 为什么下面的代码会出现段错误问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7220761/

相关文章:

c++ - getopt_long 行为怪异

c - 访问pcap文件头

c - 我在修改当前代码以设置此 C 代码的不确定数量的学生时遇到了很多麻烦

c - C语言中 "string"的通用交换

python - 递归、分治最大子数组

c - 树莓派无法通过串口通信向PC发送数据

c# - 消除删除空目录算法中的递归

Perl File::Copy::Recursive fcopy 不在 UNC 路径上创建目录

linux - 按名称递归提取 .7z - P7zip

algorithm - 如何在动态规划算法中进行转换?