JavaScript循环计算分数序列和代码运行结果不符求助
问题原因
你现有代码的问题主要出在两个地方:
- 求和项计算逻辑错误:当前你使用的
fraction /= (number - counter)是累除操作,第一次运行得到1/5后,第二次运行会变成1/5 /4 = 1/(5*4),并非你需要的1/4,完全不符合目标求和项的要求 - 循环边界错误:循环条件
counter <= number会导致counter等于number时,number - counter取值为0,出现除以0的异常,最终得到错误的无穷大结果 - 额外说明:你不需要用parseFloat处理小数,JS中整数做除法运算会自动返回浮点数结果
修复后可运行代码
var sum = 0; var number = parseInt(prompt("Enter an integer: ", "5")); // 直接遍历分母从n到1,每次累加对应项 for (var counter = number; counter >= 1; counter--) { sum += 1 / counter; } document.write("The total value is " + sum);
封装为fractionSum函数版本
function fractionSum(n) { let sum = 0; for (let i = n; i >= 1; i--) { sum += 1 / i; } return sum; } // 测试 console.log(fractionSum(5)) // 输出 2.283333333333333
内容的提问来源于stack exchange,提问作者J Kingslien
相关产品推荐
相关产品推荐

