def partitions(n, m):
if n > 0 and m > 0:
print(f"Entering partitions({n}, {m})")
if n == m:
print(f" Yielding {m}")
yield str(m)
for p in partitions(n - m, m):
print(f" Yielding {p} + {m}")
yield p + '+' + str(m)
yield from partitions(n, m - 1)
print(f"Exiting partitions({n}, {m})")
# 调用 partitions(5, 3)
gen = partitions(5, 3)
for partition in gen:
pass
不是很懂yield和递归结合起来后的运行顺序