You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何在循环中实现当前迭代值与上一次迭代值累加

问题根因

你的代码运行结果异常,是两处写法错误导致的:

  • 循环内部写了i++语句:执行到int y = input[i++];时会额外给循环索引自增1,等于每次循环直接跳过2个元素,不仅取值完全错位,还可能触发索引越界异常,根本拿不到上一次迭代的目标值
  • 没有单独存储上一轮迭代的有效值:直接在循环内靠索引偏移取值的方式,既没法正确关联跨轮次的计算结果,也无法适配累加逻辑的状态留存需求
正确实现

根据两种常见的累加需求,对应实现如下:

  • 需求1:每轮计算「当前迭代元素 + 上一轮迭代的累加结果」(即输出前缀累计和)
int[] input = { 28, 2, 3, -3, -2, 1, 2, 35, -1, 0, 0, -1 };
// 初始化存储上一轮迭代值的变量,首元素无前置累加值,初始值设为0即可
int lastSum = 0;
for (int i = 0; i < input.Length; i++)
{
    int current = input[i];
    int output = current + lastSum;
    Console.WriteLine(output);
    // 将当前轮结果存为上一轮值,供下一轮计算使用
    lastSum = output;
}
  • 需求2:每轮计算「当前迭代元素 + 数组中相邻的上一个元素」(首元素无前置相邻值可单独处理)
int[] input = { 28, 2, 3, -3, -2, 1, 2, 35, -1, 0, 0, -1 };
// 首元素直接输出
Console.WriteLine(input[0]);
// 从第二个元素开始遍历,直接取i-1位置的元素就是上一个相邻值
for (int i = 1; i < input.Length; i++)
{
    int output = input[i] + input[i-1];
    Console.WriteLine(output);
}

注意:非必要不要在for循环的逻辑块内手动修改循环索引变量i的值,随意修改很容易出现遍历漏值、取值错位、索引越界的问题。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 14:21:20