Có cách nào để trộn đệ quy và yieldcâu lệnh không? Ví dụ, một trình tạo số vô hạn (sử dụng đệ quy) sẽ giống như sau:
def infinity(start):
yield start
# recursion here ...
>>> it = infinity(1)
>>> next(it)
1
>>> next(it)
2
Tôi đã thử:
def infinity(start):
yield start
infinity(start + 1)
và
def infinity(start):
yield start
yield infinity(start + 1)
Nhưng không ai trong số họ làm theo ý tôi, cái đầu tiên dừng lại sau khi nó mang lại hiệu quả startvà cái thứ hai cho kết quả start, sau đó là máy phát điện và sau đó dừng lại.
LƯU Ý: Xin vui lòng, tôi biết bạn có thể làm điều này bằng cách sử dụng vòng lặp trong khi:
def infinity(start):
while True:
yield start
start += 1
Tôi chỉ muốn biết nếu điều này có thể được thực hiện một cách đệ quy.