C#新手技术求助:如何累加循环生成的算术序列所有值
解决算术序列累加求和的问题
嘿,作为C#新手能自己动手搭建项目、生成序列项已经超棒啦!我看你已经成功输出了算术序列的每一项,现在就差把这些值累加起来得到总和对吧?咱们一步步来解决这个问题:
首先先看你现有的代码:
class Program { static void Main(string[] args) { int a = 22; int b = 8; int answer; Console.WriteLine(a); for (int i = 1; i <= 43; i++) { answer = a + b * i; Console.WriteLine(answer); } } }
你现在的问题是,answer变量每次循环都会被新的序列项覆盖,没有把之前的值保存并累加起来。解决方法很简单,只需要新增一个专门用于累加的变量,比如sum,初始值设为0,然后把每一项的值都加到这个变量里就行。
修改后的代码
class Program { static void Main(string[] args) { int a = 22; int b = 8; // 初始化累加变量,初始值为0 int sum = 0; // 先把首项a加到总和里 sum += a; Console.WriteLine(a); for (int i = 1; i <= 43; i++) { int currentItem = a + b * i; sum += currentItem; // 把当前项加到总和中 Console.WriteLine(currentItem); } // 循环结束后输出总和 Console.WriteLine($"算术序列的总和为:{sum}"); } }
代码解释
- 新增
sum变量用来保存累加的结果,初始值必须是0(因为0加任何数都不会改变它的值) - 你的序列首项是
a,所以先把a加到sum里 - 循环中每次生成当前项
currentItem,然后用sum += currentItem(等价于sum = sum + currentItem)把它累加到总和中 - 循环结束后,
sum就是所有序列项的总和了
额外小技巧:用算术公式直接计算(更高效)
其实算术序列的求和有现成的公式,不需要循环累加,计算效率更高:
总和 = 项数 × (首项 + 末项) ÷ 2
你的序列首项是a=22,末项是a + 43*b = 22 + 43*8 = 366,项数是44项(首项+后面43项),代入公式就是:总和 = 44 × (22 + 366) ÷ 2 = 44 × 388 ÷ 2 = 8536
用代码实现的话,直接这样写就行:
class Program { static void Main(string[] args) { int a = 22; int b = 8; int termCount = 44; // 首项+43个后续项,共44项 int lastTerm = a + b * 43; int sum = termCount * (a + lastTerm) / 2; Console.WriteLine($"算术序列的总和为:{sum}"); } }
两种方法都能得到正确结果,循环累加适合理解过程,公式计算适合高效求解,你可以根据自己的需求选择~
内容的提问来源于stack exchange,提问作者Badger Hart
相关产品推荐
相关产品推荐

