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)
添加回答
举报