python - 如何使用递归计算数字达到最大值需要多长时间?
问题描述
我正在编写一个递归函数来分析各种物种种群随时间的增长。我有四个参数:第一年物种的初始种群(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
我被困在事物的递归端,我理解的公式和数学。
谢谢您的帮助!
解决方案
您需要的功能是这样的:
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))
推荐阅读
- php - 如何从价格列(数据库)中获取两个最小值。[拉拉维尔]
- python - 在 Python 中的列表中保留项目的最新版本
- teradata - Teradata:在整数和单词之间预期类似“,”
- javascript - 没有小数的温度。21.01 > 21
- c++ - 作业左侧的功能问题
- javascript - 我可以在 Python 中创建类似 JavaScript 的对象吗
- ruby-on-rails - PG::UndefinedTable:错误:关系“条目”不存在
- .net - 在 UWP 中以短时间间隔运行简短的后台任务以应对特殊情况的报警场景
- algorithm - 如何使用带递归的方案将数字插入已排序的数字,合并后的数字仍然排序?((插入1245 3)-> 12345)
- java - 使用java中的正则表达式剥离或概括SQL字符串中的所有函数调用参数