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

阶乘代码异常:数值>20触发越界提示,<-1无提示问题排查

PHP阶乘代码越界判断问题修复

你的代码核心问题是越界判断逻辑被放在了for循环内部:

  • 当输入数值小于-1时,for循环的初始条件$i = $number; $i > 0不成立,循环直接跳过,内部的if判断根本不会执行,所以不会触发"out of range"提示,反而会直接执行最后的echo语句。
  • 只有当输入数值在1-20之间时,循环才会执行,但此时数值本身合法,判断逻辑也不会生效。

正确的做法是把合法性校验移到循环之前,确保所有不符合要求的输入(大于20或小于0)都能被提前拦截:

<?php
$number = -1;
$factorial = 1;

// 先做合法性校验,放在循环执行前
if ($number > 20 || $number < 0) {
    exit('out of range');
}

// 仅当数值合法时,执行阶乘计算
for ($i = $number; $i > 0; $i--) {
    $factorial = $factorial * $i;
}

echo "the factorial of $number is: " . $factorial;

补充说明:根据阶乘定义,0的阶乘结果为1,上述代码保留了对0的支持——若输入0,循环不会执行,$factorial保持初始值1,输出结果符合数学定义。如果需要完全禁止0的输入,只需把判断条件改成$number > 20 || $number <= 0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:45:39