分数求和程序错误排查:求n/1+(n-1)/2+…+1/n的和结果不符
问题分析与修正
你的代码存在两个核心错误,直接导致结果偏离预期:
- 循环范围错误:原代码用
range(1, n-1),当n=6时,循环仅执行i=1、2、3、4这4次,但求和式需要覆盖分母从1到n的共n项,正确的循环范围应为range(1, n+1)(因为Python的range是左闭右开区间)。 - 求和项表达式错误:原代码里的
i/1完全不符合求和规则,每一项的分子应该是n - i + 1,分母是i。比如i=1时对应n/1,i=2时对应(n-1)/2,直到i=n时对应1/n。
修正后的代码
n = int(input("Please enter a positive integer: ")) sum2 = 0.0 for i in range(1, n + 1): sum2 += (n - i + 1) / i print(f"For n = {n} the sum n/1 + (n-1)/2 + ... 1/n is {sum2:.2f}")
输入n=6时,计算过程为:6/1 + 5/2 + 4/3 + 3/4 + 2/5 + 1/6 = 6 + 2.5 + 1.333... + 0.75 + 0.4 + 0.166... ≈ 11.15,与预期结果一致。
内容的提问来源于stack exchange,提问作者bee
相关产品推荐
相关产品推荐

