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

如何编写递归函数统计列表中后一元素为当前元素两倍的元素个数

递归版本实现

核心逻辑

  • 边界条件:当列表长度小于2时,不存在相邻元素,直接返回0
  • 递归逻辑:先判断当前列表前两个元素是否满足「后一个元素是前一个的2倍」的要求,再递归计算从第二个元素开始的子列表的符合条件的数量,两者相加即为最终结果

完整代码

def countDouble_recursive(L):
    # 递归终止条件
    if len(L) < 2:
        return 0
    # 检查当前前两位是否符合要求
    current = 1 if int(L[1]) / 2 == int(L[0]) else 0
    # 递归处理剩余子列表并累加结果
    return current + countDouble_recursive(L[1:])

# 测试代码
L = [1, 2, 4, 8, 16, 32, 64, 128, 256]
print(countDouble_recursive(L))

运行测试用例输出为8,和你原有非递归版本的输出结果完全一致。

优化建议:原逻辑中用除法判断可能存在浮点数精度风险,建议替换为int(L[1]) == 2 * int(L[0]),判断逻辑更严谨。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:03