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

如何用递归实现两整数匹配数字统计(禁用全局变量)

递归实现两个整数匹配数字统计

你的原代码存在几个问题:多余的for循环(递归本身会逐位处理,不需要循环)、不必要的大小分支判断(不管两个数长度差异,递归会自动处理到其中一方变为0)、终止条件的返回值错误。

下面是正确的递归实现,完全符合你的要求(无全局变量,仅接受两个整数参数):

def digit_match(number1, number2):
    # 获取两个数的最后一位数字
    d1 = number1 % 10
    d2 = number2 % 10
    # 判断当前位是否匹配,匹配则记1,否则记0
    current_match = 1 if d1 == d2 else 0
    
    # 终止条件:当两个数都被拆分为0时,没有更多位可比较,返回0
    if number1 == 0 and number2 == 0:
        return 0
    
    # 递归处理去掉最后一位的两个数,累加当前位的匹配结果
    return current_match + digit_match(number1 // 10, number2 // 10)

逻辑解释

  1. 逐位比较:每次取两个数的最后一位,判断是否匹配,得到当前位的匹配数。
  2. 递归递进:将两个数分别除以10(去掉最后一位),递归调用函数处理剩余部分。
  3. 终止条件:当两个数都被拆分为0时,说明所有位都已比较完毕,返回0不再继续递归。

示例验证

  • 输入digit_match(123456, 3456):逐位比较最后4位均匹配,最终返回4。
  • 输入digit_match(12345, 54321):仅中间第三位(3和3)匹配,最终返回1。

内容的提问来源于stack exchange,提问作者Ahmet Cem Çalık

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:15:04