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

C语言递归实现数字各位求和程序输入后无输出问题求助

C语言各位数求和代码错误排查

存在的错误点:

  • 递归终止条件逻辑错误:你在sum函数中写的判断条件if(sum==0)完全错误,sum是当前函数的指针,该判断永远为假,会导致递归无限循环,程序直接卡死没有后续输出。正确的终止条件应为判断传入的数值参数num == 0,代表所有位已经处理完毕。
  • 递归返回逻辑错误:total是sum函数的局部变量,每次调用sum函数都会被初始化为0,当前层级计算的个位数值没有叠加到递归返回结果中,就算终止条件改对最终也只能得到0的错误结果。

修正后可正常运行的代码:

#include<stdio.h>
int sum(int num);

int sum(int num){
    if(num == 0){
        return 0;
    }
    // 直接返回当前位数值 + 剩余位数的求和结果
    return num % 10 + sum(num / 10);
}

int main()
{
    int num;
    printf("Enter positive number: ");
    scanf("%d",&num);
    printf("Sum is: %d",sum(num));
    return 0;
}

修改后输入12345即可得到输出15,符合预期功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:02