You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言奇偶判断递归函数出现Segmentation fault报错原因求解

段错误原因

你的递归函数posneg没有设置任何终止条件,每次调用都会直接触发下一层posneg(n-1)调用,参数会不断从你输入的正整数往负数方向无限递减,递归调用栈的深度会持续增加,直到超出操作系统给进程分配的栈空间上限,触发栈溢出,最终表现就是Segmentation fault。

除此之外,你当前的递归逻辑也无法实现奇偶判断的需求,哪怕解决了段错误也得不到正确结果。

修复后的代码

按照递归判断奇偶的逻辑,只需要补充终止边界、调整返回逻辑即可:

#include <stdio.h>

int posneg(int n){ 
    // 递归终止条件:0是偶数,直接返回1(对应偶数判断结果)
    if(n == 0){
        return 1;
    }
    // n的奇偶性和n-1相反,直接取反即可
    return !posneg(n-1);
}

int main () { 
    int num;
    do{ 
        printf("Provide a number: "); 
        scanf("%d",&num); 
    } while (num <= 0);
    if (posneg(num) == 1)
        printf("The number is even\n");
    else 
        printf("The number is odd\n");
    return 0;
}

内容的提问来源于stack exchange,提问作者el_noobito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:03