C++算术求和函数调试求助:不可修改主函数区域
修正aritmetiskSumma函数实现
原函数存在三个核心问题:
- 循环起始值错误,从1开始累加而非传入的
from参数 - 循环终止条件错误,
i < to会漏掉to本身,不符合“包含两端数”的要求 - 完全未使用
from参数,偏离了题目要求的求和范围
方案1:循环累加(直观易懂)
直接从from遍历到to(包含),逐个累加:
int aritmetiskSumma(int from, int to){ int sum = 0; for(int i = from; i <= to; i++){ sum += i; } return sum; }
方案2:等差数列求和公式(高效优化)
利用等差数列求和公式可以避免循环,尤其适合大范围数值求和:
总和 = 项数 × (首项 + 末项) ÷ 2,其中项数为 to - from + 1
int aritmetiskSumma(int from, int to){ int termCount = to - from + 1; return termCount * (from + to) / 2; }
两种方案都能满足题目要求,例如调用aritmetiskSumma(2,4)时,都会返回正确结果9。
内容的提问来源于stack exchange,提问作者Mattias
相关产品推荐
相关产品推荐

