如何应用模数以使索引永远不为 0?

How do I apply the modulo such that an index is never 0?

假设我索引一周中的几天,从 1 开始是星期一,从 7 开始是星期日。我有四个数组 x、y、z 和 r,它们存储一周中每一天的变量。例如,x[1] 是周一赚取的​​收入,y[7] 是周日结转的收入,z[6] 是周六节省的收入。 周一的总收入为 x[1] + y[7] + z[6] = r[1]。同样,周二的总收益为 x[2] + y[1] + z[6] = r[2].

我正在尝试编写这样的 for 循环:

for i in 1:7
    x[i] + y[i-1] + z[i-2] = d[i]
end

当 i = 1 和 i = 2 时,索引不会变得小于或等于 0(我的索引从 1 开始,如果结果是 0,我会得到一个越界错误)。

我尝试使用取模函数来帮助解决这个问题,但我意识到在某些情况下,无论我尝试什么值,我都会得到 0。例如,加 7 然后应用模 7 确保当 i = 1 时 z[i-2] 是 z[6],但当 i = 1 时给出 y[i-1] = y[0]:

for i in 1:7
        x[(i+7)%7] + y[(i-1+7)%7] + z[(i-2+7)%7] = d[(i+7)%7]
end

是否有有效的解决方案?

在模内加 6 而不是 7,在外加 1。

( i + 6 ) % 7 + 1