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
相关产品推荐
相关产品推荐

