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

关于40585自幂数判断程序y=0时temp值异常的技术咨询

问题原因解析

核心问题出在你对temp的初始值和内层循环执行逻辑的误解:

  • 当迭代到x=40时,y = x%10 = 0,此时temp的初始值是1,而非你以为的0。
  • 内层for循环的条件是i = y; i > 1; i--,也就是i从0开始,0 > 1的条件不成立,循环体完全不会执行,temp不会被任何乘法操作修改,始终保持初始值1。

你预期temp变为0,但代码中没有任何将temp设为0的逻辑:

  • 当y≥2时,循环执行乘法,计算y!;
  • 当y=1时,循环条件i>1不成立,temp保持1(符合数学上1! = 1的定义);
  • 当y=0时,代码逻辑等价于计算0!,而数学上0! = 1,所以temp最终是1,这导致output比你预期的多了1,最终结果为40585而非40584。

如果需要让y=0时temp为0(比如业务需求不遵循阶乘定义),可以添加判断逻辑:

int temp = 1;
int y = x % 10;
if (y == 0) {
    temp = 0;
} else {
    for (int i = y; i > 1; i--)
        temp *= i;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:32:46