逆平方数列前n项和计算函数结果不符,请求排查错误
你的代码逻辑完全偏离了逆平方数列的计算规则
错误点分析
- 核心逻辑错误:逆平方数列的每一项是
1/(i²)(i从1到n),但你的代码用了完全错误的累积除法逻辑。以n=5为例,你的代码实际计算的是5/(5) + 5/(5*4) +5/(5*4*3)+5/(5*4*3*2)+5/(5*4*3*2*1),这和目标数列毫无关系。 - 多余的初始值处理:
x.toFixed(2)完全没必要,输入的n是项数,应为整数,不需要提前格式化小数。 - 返回值不符合要求:题目要求返回保留两位小数的字符串,但你的代码直接返回数字,未做格式转换。
修正后的代码
module.exports.seriesSum = function seriesSum(n) { let sum = 0; // 循环遍历1到n,累加每一项的逆平方值 for (let i = 1; i <= n; i++) { sum += 1 / (i * i); } // 保留两位小数并转为字符串返回 return sum.toFixed(2); }; console.log(module.exports.seriesSum(5)); // 输出 "1.46"
修正说明
- 调整循环逻辑:从1到n遍历,直接计算每一项的
1/(i*i)(用乘法替代Math.pow(i,2)更直观高效)并累加。 - 用
toFixed(2)完成小数格式化,直接返回符合要求的字符串类型结果。 - 移除了冗余的
param变量,逻辑更清晰简洁。
内容的提问来源于stack exchange,提问作者Follow Magnus
相关产品推荐
相关产品推荐

