首页 > 解决方案 > 递归函数中的Python奇怪的屈服行为

问题描述

这只是一个演示代码,用于了解递归函数中的屈服行为。我希望它返回一个可迭代列表 [5,4,3] 但它在第一次迭代时停止并且只返回 [5]

谁能解释为什么会这样?

def yield_test(input):
    if input > 3:
        yield_test(input-1)

    yield input

print(list(yield_test(5)))

输出:[5] 预期输出:[5, 4, 3]

标签: pythonrecursionyield

解决方案


您需要在函数中yield from yield_test()反转 s 的顺序:yield

def yield_test(input):
    yield input

    if input > 3:
        yield from yield_test(input-1)

推荐阅读