fib在python中什么意思_动态更改fibonnacci程序python的递归限制

我试图写一个递归的multinacci函数(基本上是斐波纳契数,除了兔子在每个繁殖周期产生k对而不是1对)函数,我希望它能处理所有n。到目前为止,我的代码是:from functools import lru_cache

from sys import getrecursionlimit, setrecursionlimit

def fibnum(n, k=1):

"""Returns the nth fibonacci number of order k"""

# check if recursionlimit needs increasing

return _fibnum(n, k)

@lru_cache(maxsize=None)

def _fibnum(n, k):

if n <= 0:

return 0

if n == 1:

return 1

return _fibnum(n-1, k) + k * _fibnum(n-2, k)

关于代码的一些注意事项:第一个函数是第二个函数的包装器,这样描述文本看起来就正确了。第二个功能是记忆化的,这大大提高了性能。在

我注意到,当我试图寻找fibnum的递增值(100、400、1000等)时,我可以绕过递归限制,因为记忆化缩短了递归。我希望能够立即运行我的函数来处理任何数字。我尝试过测试n的递归限制的界限,然后将递归限制设置为该范围,但唯一可行的方法是n2,但这似乎太高了。在

有什么建议吗?在

注意:稍后,我想在公式中添加一个寿命(基本上是减去fibnum(n-life_span,k))。这将如何影响所需的递归深度?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值