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

递归实现指定逻辑数学运算函数出错,求修正方案

递归函数逻辑修正问题

需求说明

实现一个递归函数,执行以下逻辑:

  1. 若a=0或b=0,返回[a, b];否则执行步骤2
  2. 若a≥2b,将a设为a-2b,重复执行整个逻辑;否则执行步骤3
  3. 若b≥2a,将b设为b-2a,重复执行整个逻辑;否则返回[a, b]

预期效果示例

  • 输入(6, 19)返回[6, 7]
  • 输入(2, 1)返回[0, 1]
  • 输入(22, 5)返回[0, 1]
  • 输入(8796203,7556)返回[1019,1442]

当前代码问题

你提供的代码仅执行一次减法操作就返回结果,没有通过递归重复执行逻辑,导致需要多次迭代的场景(如(22,5))无法得到正确结果,且不符合递归要求。

修正后的代码

def reduce_pair(a, b):
    # 终止条件:a或b为0
    if a == 0 or b == 0:
        return [a, b]
    # a≥2b时,更新a后递归
    if a >= 2 * b:
        return reduce_pair(a - 2 * b, b)
    # b≥2a时,更新b后递归
    if b >= 2 * a:
        return reduce_pair(a, b - 2 * a)
    # 不满足以上条件,返回当前值
    return [a, b]

修正说明

  • 去掉了冗余的中途判断,每次更新a或b后直接递归调用函数,让流程重新从第一步开始判断
  • 严格遵循递归逻辑:每次调整值后,重新进入整个判断流程,直到触发终止条件(a或b为0,或两者都不满足≥2倍对方的条件)

以(22,5)为例,递归流程如下:

  1. 22≥10 → 调用reduce_pair(12,5)
  2. 12≥10 → 调用reduce_pair(2,5)
  3. 5≥4 → 调用reduce_pair(2,1)
  4. 2≥2 → 调用reduce_pair(0,1)
  5. 触发终止条件,返回[0,1],符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:55:19