如果在递归函数中使用yield,有时候并不能进入下一层。
比较有用的例子,见:https://bbs.csdn.net/topics/210037644
def Test(a):
print("进入..", a)
if a <= 0:
print('执行1')
yield a
print('执行了yield1')
return
#**Test(a-1)主要就是在这里将原先的Test(a-1)扩展成了for循环**
for r in Test(a - 1):
print('执行2')
yield r
print('执行了yield2')
print("...")
yield a
print('###')
#Test(a-2)
for r in Test(a - 2):
print('执行3')
yield r
print('执行了yield3')
print("退出..", a)
rst = Test(1)
print('@@@@@@@@@@@@@@@@@')
print('test:',next(rst))
print('%%%%%%%%%%%%%%%%%%%')
print('test1:',next(rst))
print('%%%%%%%%%%%%%%%%%%%')
print('test2:',next(rst))
print('test3:',next(rst))
# # print('test4:',next(rst))
# for r in rst:
# print('leo_r:',r)