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

递归函数print_num_pattern输出数字模式缺失0值的问题排查

修复print_num_pattern递归函数缺失0的问题

需要实现递归函数print_num_pattern(num1, num2),功能是从num1开始持续减num2直到得到0或负数,再持续加num2回到num1,每个整数后加空格。但当前代码输入12和3时,输出为12 9 6 3 6 9 12,缺失了预期中的0。

问题分析

原代码里的if num1 - num2 <= 0: return是错误根源:当当前数值减去num2后等于0或负数时,直接终止了后续逻辑,没有触发对num1 - num2(也就是0)的递归调用,导致0从未被打印。比如当num1=3、num2=3时,3-3=0<=0,代码直接返回,完全没执行print_num_pattern(0, 3)这一步。

修正方案

移除这个多余的判断分支,让递归可以自然走到num1 <= 0的终止条件。这样递归到0时会先打印0,再逐层返回打印之前的数值,完整覆盖整个序列。

修正后的代码

def print_num_pattern(num1, num2):
    # 终止条件:num1为0或负数时打印并返回
    if num1 <= 0:
        print(num1, end=' ')
        return
    
    # 先打印当前数值
    print(num1, end=' ')
    # 递归调用,继续减num2
    print_num_pattern(num1 - num2, num2)
    # 递归返回后,再次打印当前数值
    print(num1, end=' ')

if __name__ == "__main__":
    num1 = int(input())
    num2 = int(input())
    print_num_pattern(num1, num2)

验证结果

输入12和3时,输出为:12 9 6 3 0 3 6 9 12,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:25:37