如何解决使用fibonacci:停止执行并从停止位置开始的Python函数
我想要一个停止在第150个数字处的python函数,然后在我需要第400个数字时,它不重新计算前150个斐波那契数,而是从第150个数字开始直到第400个数字。
解决方法
您可以尝试使用生成器:
def fibo_gen(a=0,b=1):
while True:
#returns a generator object
yield a
a,b = b,a+b
# create generator object
gen_f = fibo_gen()
fibo_list = [next(gen_f) for i in range(150)]
# get the 151 number without recalculating the previous
next(gen_f)
# will return
9969216677189303386214405760200
或者另一种方法可能是使用全局字典:
#fibonacci dict with cached values
fib_cached = {}
def _fib(n):
# check if fibo number is already cached
if n in fib_cached:
return fib_cached[n]
if n<=2:
value=1
else:
value = _fib(n-1) + _fib(n-2)
# save the fibo number to dict
fib_cached[n]=value
return value
,
我认为您可以实现一个数组,该数组存储所有已经计算出的数字,可以存储在变量中,也可以是使用numpy导出的数组,也可以存储在数据库中,例如使用最后一个数字。 然后,该函数将必须采用startnumber和stopnumber参数。 我不知道您能否只计算一个特定的斐波那契数,因为它是一个递归函数。
,您可以通过以下方式完成操作:
def Fibonacci(n,pause_val):
a = 0
b = 1
i = 2
print(a)
print(b)
while i<n:
c = b
b = b + a
a = c
print(b)
i += 1
if i == pause_val:
input('Press Enter to continue: ')
continue
Fibonnaci(400,150)
您会在这里注意到我正在使用input
函数暂停Fibonnaci
的执行,然后在收到输入响应后继续执行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。