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

代码逻辑数学问题排查:输入100时平方差计算结果异常

平方差计算逻辑错误分析与修正

你的代码存在三个关键问题,导致计算结果不符合预期:

  • 循环边界错误:两个计算方法中的循环条件都是i < input,这会遗漏最后一个目标数(比如输入100时,只计算到99)。正确的边界应该是i <= input,确保包含输入值本身。
  • 循环变量被非法修改:在computeSumOfSquaresTo方法里,你直接把循环计数器i赋值为自身的平方,这会导致循环步长混乱,跳过大量本该计算的数字。比如i=2时被改成4,下一次循环i变成5,直接跳过了3的平方计算。
  • 浮点数精度丢失:使用Math.pow计算平方后强制转int,当数值较大时可能因为double类型的精度限制丢失数据。用整数直接相乘(比如sumOfNatural * sumOfNatural)更可靠,完全避免精度问题。

修正后的代码如下:

class DifferenceOfSquaresCalculator {

    int computeSquareOfSumTo(int input) {
        int sumOfNatural = 0;
        for (int i = 1; i <= input; i++) {
            sumOfNatural += i;
        }
        return sumOfNatural * sumOfNatural;
    }

    int computeSumOfSquaresTo(int input) {
        int sumOfSquaredNaturals = 0;
        for (int i = 1; i <= input; i++) {
            sumOfSquaredNaturals += i * i;
        }
        return sumOfSquaredNaturals;
    }

    int computeDifferenceOfSquares(int input) {
        return computeSquareOfSumTo(input) - computeSumOfSquaresTo(input);
    }

}

测试输入100时,修正后的代码会得到正确结果25164150。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:21:01