2 回答

TA貢獻1871條經驗 獲得超8個贊
斐波那契數是生成器的典型示例。為什么函數應該返回一個函數而不是生成器只是令人惱火的。
def fibonacci_closure():
def fibonacci():
i = j = 1
while True:
yield i
i, j = j, i + j
return fibonacci().__next__

TA貢獻1829條經驗 獲得超7個贊
您嘗試完成的任務可以通過創建一個類來完成。(或者您可以考慮創建一個“生成器”對象,這是它自己獨立的東西。)
為了在一次調用到下一次調用中保留 n 的值,您需要某種全局變量。Python 中的全局變量是可能的,但這是不好的做法。同樣的事情可以在一個類中完成,其中 n 存儲并封裝在該類中。
查看我所做的更改,看看該功能現在是否按您的預期工作。干杯!
class fibonacci_closure():
def __init__(self):
self.n = 0
def fibonaci(self):
if self.n == 0:
self.n+=1
print(0)
elif self.n == 1 or self.n == 2:
self.n+=1
print(1)
else:
i = 1
j = 1
tmp = 1
hold = self.n
while hold != 2:
hold -=1
tmp = i
i = j + i
j = tmp
self.n+=1
print(i)
添加回答
舉報