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

递归检查列表相邻元素和为12倍数及剩余元素和奇偶性问题

解决递归检查相邻元素和为12倍数且剩余元素和为奇数的问题

看起来你已经摸到了递归思路的门,但目前的实现只盯着列表开头的相邻元素对,没覆盖到中间位置的情况对吧?咱们一步步把这个问题捋顺修复。

问题拆解

先再明确下你的核心需求:

  • 遍历列表里所有相邻元素对,找有没有哪一对的和是12的倍数
  • 一旦找到符合条件的相邻对,就计算移除这两个元素后剩余所有元素的总和,判断是否为奇数
  • 只要存在任意一对满足上述两个条件,就返回true;否则返回false

像你提到的[10,7,5,5],中间的7+5=12符合第一个条件,移除后剩下[10,5]的和是15(奇数),理应返回true,但你的代码没处理后续的相邻对,所以出了问题。

递归实现的正确思路

递归的关键是要让每一次递归都能推进检查的进度,覆盖所有可能的相邻对:

  1. 基线条件:如果列表长度小于2,没有相邻元素对可以检查,直接返回false
  2. 递归步骤:
    • 先检查当前列表的第一个相邻对(索引0和1):如果和是12的倍数,就计算剩余元素的和是否为奇数,是则直接返回true
    • 如果第一个相邻对不满足,就递归检查去掉第一个元素后的子列表——这样每递归一次,就会把下一组相邻对推到“第一个相邻对”的位置,自然就能遍历所有相邻元素了

代码示例(以Python为例)

def check_valid_pair(lst):
    # 基线条件:列表长度不够2,没有相邻元素对
    if len(lst) < 2:
        return False
    
    # 检查当前列表的第一个相邻对
    current_pair_sum = lst[0] + lst[1]
    if current_pair_sum % 12 == 0:
        # 计算移除这对元素后剩余元素的和
        remaining_sum = sum(lst[2:])
        if remaining_sum % 2 != 0:
            return True
    
    # 第一个相邻对不满足,递归检查去掉第一个元素后的子列表
    return check_valid_pair(lst[1:])

测试验证

咱们用你给出的案例测试下:

  • check_valid_pair([6,6,5]):6+6=12,剩余和为5(奇数)→ 返回true,符合预期
  • check_valid_pair([6,5,6,1]):依次检查6+5=11(不满足)、5+6=11(不满足)、6+1=7(不满足)→ 返回false,符合预期
  • check_valid_pair([10,7,5,5]):先检查10+7=17(不满足),递归到[7,5,5]后,7+5=12(满足),剩余和为5(奇数)→ 返回true,完美解决你的问题!

额外补充

如果你的需求里有特殊情况(比如允许重复检查同一元素?不过相邻对本身不会重叠),可以再调整逻辑,但目前的实现已经完全覆盖了你提到的所有场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:11:21