首页 > 编程语言 > 详细

python之递归与yield的结合

时间:2020-01-10 15:42:17      阅读:76      评论:0      收藏:0      [点我收藏+]

python中简单的递归类似于这样:

def countdown(n):
    if n > 0:
        print(n)
        countdown(n-1)

countdown(10)

但是如果把print改为yield后就出现问题了

def countdown(n):
    if n > 0:
        yield n
        countdown(n-1)

t = countdown(10)
for x in t:
    print(x)

只能输出第一个元素,yield后面的递归调用根本运行不了,因为它只是一生成器,既没有运行也没有输出。

解决办法是把递归调用改为循环遍历,代码如下:

def countdown(n):
    if n > 0:
        yield n
        for i in countdown(n-1):
            yield i


t = countdown(10)
for x in t:
    print(x)

python之递归与yield的结合

原文:https://www.cnblogs.com/python-xuehb/p/12176395.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!