一、问题背景在编程中,我们经常会遇到环形结构的场景:圆桌分糖果、约瑟夫环问题循环队列、环形缓冲区环形链表、环形数组遍历游戏中的地图边界循环(如贪吃蛇穿墙)这类问题的核心痛点是:如何优雅地计算环形数组中元素的「前一个 / 后一个」下标,同时避免数组越界?最经典、最通用的解决方案,就是这行代码:// 计算环形数组中,下标i的「前一个」下标(左邻居) int prev = (i - 1 + n) % n; // 计算环形数组中,下标i的「后一个」下标(右邻居) int next = (i + 1) % n;其中n是数组的总长度。二、公式原理拆解1. 核心思想:模运算实现「循环」模运算%的本质是求余数,对于整数a和正整数n,a % n的结果一定落在[0, n-1]区间内,完美适配数组下标(数组下标从 0 开始)。2. 右邻居:(i + 1) % n逻辑:当前下标i的下一个元素,就是i+1。边界处理:当i = n-1(数组最后一个元素)时,i+1 = n,n % n = 0,自动回到数组第一个元素,实现环形