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

PHP实现奇数三角形第n行求和:代码报错求原因线索

PHP代码排障线索请求

问题背景

给定由连续奇数组成的三角形:

1
          3     5
       7     9    11
   13    15    17    19
21    23    25    27    29
...

需计算该三角形第n行(从索引1开始)的数字之和,示例:

1 -->  1
2 --> 3 + 5 = 8

我的实现代码

function rowSumOddNumbers($n) {
  if ($n==1){
    return 1;
  }
  
  $licznik = 0;
  
  for ($i=$n; $i>0; $i--){
    $licznik += $i;
  }
  
  $liczba = ($licznik*$n) - 1;
  $suma = 0;

  
  for ($i=$n; $i>0; $i--){
    $suma += $liczba;
    $liczba = $liczba - 2;
  }
  
  return $suma;
  
}

测试失败情况

Failed asserting that 15210 is identical to 2197.

排障线索

  • 先手动计算$licznik的取值:比如当n=3时,你的代码算出来的$licznik是多少?它是否等于前n-1行的数字总个数?这是定位起始数错误的关键。
  • 验证$liczba的推导公式:拿n=3来测试,代入公式算出的$liczba是不是第3行的最后一个数(11)?如果不是,说明公式逻辑错误。
  • 观察测试用例的数值:2197是13³,而你的代码输出15210,这能侧面反映行和的规律,反过来检查你计算行内数字的起始/结束值是否正确。
  • 手动跑一遍n=3的代码执行流程:记录每一步变量的取值,对比正确的行内数字(7、9、11),看哪一步的变量值偏离了预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:46:03