python斐波那契数列计算_python demo 计算斐波那契数列

计算斐波那契数列的时候, 自己的demo可能会受限代码迭代的深度和算法的复杂度,连第50位都要算很久,可以考虑将前面已经计算过的值存起来, 方便下次直接用,或许能一定程度的减少程序的运行时间和有压力,本人菜鸟一个, 直接上代码:

# import sys

# sys.setrecursionlimit(1000000)

sto = {}

from time import time

def print_execute_time(func):

def wrapper(*args, **kwargs):

start = time()

func_return = func(*args, **kwargs)

end = time()

print(f'{func.__name__}() execute time: {end - start}s')

# 返回func的返回值

return func_return

return wrapper

@print_execute_time

def feobo_sto(n):

global sto

if n <= 1:

if sto.get(n):

return sto[n]

else:

sto[n] = n

return sto[n]

else:

if sto.get(n):

return sto[n]

else:

c = feobo_sto(n-1) + feobo_sto(n-2)

sto[n] = c

return feobo_sto(n-1) + feobo_sto(n-2)

all_start = time()

print(feobo_sto(100))

all_end = time()

print("总用时:",all_end-all_start)

结果:

很轻松的计算出 第100 是什么了, 假如要计算 更大的,需要把默认的迭代深度调高, python 里默认的是900多,

# import sys

# sys.setrecursionlimit(1000000)

这两句就是调迭代深度的,

然后计算第1000位也很轻送, 但是再大点, 就报“Process finished with exit code -1073741571 (0xC00000FD)” 栈溢出了, 这个问题, 再查查看吧,就先记录那么多;

·····················································内容可能有点垃圾,但我只想提供一点思路,为代码世界做贡献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值