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

Python poison递归函数输出与预期不符,请求修正帮助

问题:Python递归函数poison输出不符合预期

输入测试用例poison(40, 13, 13, 7)时,当前输出最后一行是「Turn : 28, HP : 0」且额外输出None,预期输出最后一行是「Turn : 29, HP : 0」。

原代码

def poison(health, turn, initial_turn, damage):
    if health <= 0:
        print(f"Turn : {turn - 1}, HP : 0")
        return
    if turn % 3 == initial_turn % 3:
        print(f"Turn : {turn}, HP : {health}")
        health -= damage
    poison(health, turn + 1, initial_turn, damage)

# APLIKASI
print(eval(input()))

当前输出

Turn : 13, HP : 40
Turn : 16, HP : 33
Turn : 19, HP : 26
Turn : 22, HP : 19
Turn : 25, HP : 12
Turn : 28, HP : 5
Turn : 28, HP : 0
None

预期输出

Turn : 13, HP : 40
Turn : 16, HP : 33
Turn : 19, HP : 26
Turn : 22, HP : 19
Turn : 25, HP : 12
Turn : 28, HP : 5
Turn : 29, HP : 0


问题原因与修正方案

问题1:死亡回合编号错误

当health在回合28被扣除为-2后,下一次递归进入回合29,此时触发health <=0的判断,原代码打印turn-1(即28),但实际死亡判定发生在回合29,需直接使用当前turn值。

问题2:额外输出None

eval(input())执行poison函数后返回None,外层的print会输出这个返回值,需去掉外层print。

修正后的代码

def poison(health, turn, initial_turn, damage):
    if health <= 0:
        print(f"Turn : {turn}, HP : 0")
        return
    if turn % 3 == initial_turn % 3:
        print(f"Turn : {turn}, HP : {health}")
        health -= damage
    poison(health, turn + 1, initial_turn, damage)

# APLIKASI
eval(input())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:19:53