我正在编写一个递归函数来分析随时间变化的各种物种种群增长。我有四个参数:第一年的物种初始种群(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
我在事情的递归方面,我所理解的公式和数学上陷入困境。
谢谢您的帮助!
答案 0 :(得分:0)
我认为您应该创建2个独立的函数,一个函数计算增长到一定数量所需的年数,一个函数计算给定年份可以增长多少
def number_of_years_to_grow(initial, rate, max_growth):
growth = initial * (1 + rate)
if (growth <= max_growth):
return 1 + animal_growth(growth, rate, max_growth)
else:
return 1 # or return 0 (depending on whether you want to include the year where it exceed the maximum number or not)
def population_growth(initial, years, rate):
return initial * ((1 + rate) ** years)
print(number_of_years_to_grow(200, 20, 0.05))
print(animal_growth(200, 0.05, 5000))
还有其他提示,请使用有意义的变量名以提高可读性。
答案 1 :(得分:0)
您需要的功能是这样的:
pkg