如何用递归方法求解正负交替整数序列的第n项
正负交替递增序列第n项递归实现方案
这个序列的核心规则非常清晰:
- 第n项的绝对值等于n
- 奇数项为正,偶数项为负
递归实现只需要明确终止条件和递推逻辑两部分即可,下面是两种常用的实现思路:
思路1:基于奇偶判断的直观实现
这种方法逻辑最易懂,不需要复杂的数学推导,递归深度等于n,时间复杂度O(n),空间复杂度O(n)(递归栈开销)。
实现逻辑:
- 终止条件:n=1时直接返回1(序列首项)
- 递推步骤:先递归计算得到第n-1项,取其绝对值加1得到当前项的绝对值,再根据n的奇偶性赋值符号
Python 示例代码
def alternating_sequence(n): if n == 1: return 1 prev_val = alternating_sequence(n-1) current_abs = abs(prev_val) + 1 return current_abs if n % 2 == 1 else -current_abs
思路2:基于相邻项符号反转的实现
观察序列规律可以发现:每一项都等于「前一项的绝对值加1后,符号取反」,可以省去奇偶判断的步骤。
C 示例代码
int alternating_sequence(int n) { // 终止条件 if (n == 1) return 1; int prev = alternating_sequence(n-1); // 前一项为正,当前项绝对值加1后取反;前一项为负,当前项绝对值减1后取反 return -(prev > 0 ? prev + 1 : prev - 1); }
验证示例
输入不同n的返回结果如下,完全符合序列规则:
- n=3 → 返回3
- n=6 → 返回-6
- n=9 → 返回9
- n=10 → 返回-10
内容的提问来源于stack exchange,提问作者Jack Scherlag
相关产品推荐
相关产品推荐

