我不太喜欢基础算法编程,所以这是我的问题。我想创建一个可以填充循环缓冲区的算法,但它必须从缓冲区的末尾开始。我尝试了好几个小时都没有成功,所以我请求你的帮助。
我知道从缓冲区开始的原始算法: i = (i+1)%buffLen
但我想要一些东西,把 buffLen-1 的东西放到 0,当它到达 0 时,它从 buffLen-1 重新开始。
我知道它可以在有条件的情况下完成,但我确信有一个公式可以更快更干净地完成它。
我需要它在最后无限遍历对象数组。
抱歉我的英语不好。
最佳答案
尝试
i = (i + buffLen - 1) % buffLen;
它不会比 if..else
结构更有效(甚至与它一样有效),但它类似于用于向正方向移动的单行赋值方向。
关于arrays - 反循环缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287652/