如何用Java实现AddUp100方法计算输入整数后续100个数之和
原有代码问题分析
- 第一版代码问题:
- 循环仅执行10次,远达不到累加100个数字的要求
- 循环内累加的是0到9的数值,不是输入参数后续的连续整数
- 最终返回值是初始偏移后的input,不是累加结果sum
- 第二版代码问题:
- 循环终止条件逻辑错误:
i < 100仅在input小于100时会执行循环,如果input本身大于等于100,循环不会执行,完全得不到正确结果 - 没有控制累加次数为100次,只是限制了i的上限小于100,不符合需求
- 循环终止条件逻辑错误:
正确实现方案
方案1:循环计数实现(易理解)
直接控制循环执行100次,每次累加对应数值即可:
private static int AddUp100(int input) { int sum = 0; // 从input+1开始,累加100个连续整数 for (int i = 1; i <= 100; i++) { sum += input + i; } // 打印累加和 System.out.println(sum); return sum; }
逻辑验证:输入为12时,累加的是12+1到12+100也就是13到112,结果为6250,和示例要求一致。
方案2:等差数列公式实现(更高性能)
因为是连续100个整数求和,属于等差数列求和,首项是input+1,末项是input+100,项数100,求和公式为(首项+末项)*项数/2,可以避免循环,时间复杂度为O(1):
private static int AddUp100(int input) { int first = input + 1; int last = input + 100; int sum = (first + last) * 100 / 2; System.out.println(sum); return sum; }
计算验证:输入12时,首项13,末项112,(13+112)100/2 = 12550 = 6250,完全符合示例结果。同时支持正负整数输入,只要最终求和结果在int取值范围内就可以正常返回。
内容的提问来源于stack exchange,提问作者User4317
相关产品推荐
相关产品推荐

