首页 > 解决方案 > 如何使用递归计算数字达到最大值需要多长时间?

问题描述

我正在编写一个递归函数来分析各种物种种群随时间的增长。我有四个参数:第一年物种的初始种群(a),我想查看未来几年种群数量的年份(b),百分比增长率(c),最后环境可以处理的特定物种的最大数量 (d)。

(我使用的人口增长公式是 (a * b-1 + c) * (a *b-1) * 1 - (a * b-1/d))

到目前为止,这就是我所拥有的:

def animal_growth(a,b,c,d):
    growth = (a * b-1 + c) * (a *b-1)
    max_growth = growth * 1 - (a * b-1/d)
    if a > 10000:
         return 
    else:
         return max_growth 

 animal_growth(200,20,0.05,5000)

所以在上面的例子中,我想知道动物种群以每年 5% 的增长率超过 5000 只需要多长时间,从 20 年后的种群数量开始人口200。

我希望得到一个控制台输出,例如:

  8.4 # how long it will take to exceed 5000 
  6000 # the population after 20 years 
  # neither of these might be correct so if there are different answers no worries

我被困在事物的递归端,我理解的公式和数学。

谢谢您的帮助!

标签: pythonrecursion

解决方案


您需要的功能是这样的:

def animal_growth(growth,year,rate,max_growth, years=0):
    growth = (growth + (growth*rate))
    if growth < max_growth:
        years += 1
        if years == year:
            print (growth)
        return animal_growth(growth, year, rate, max_growth, years) 
    else:
        return (1 + years) 

    print(animal_growth(200,20,0.05,5000))

推荐阅读