Có cách nào để trộn đệ quy và yield
câ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ả start
và 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.