python昆虫繁殖问题

python3.9
要求:有一种虫子,从成虫经过x个月产下y对卵,卵经过两个月长成成虫。假设成虫不死,开始只有一对,过了z个月,输出成虫的数量。(x,y,z从键盘输入)
希望代码好理解些

根据题意递归:

def math(x:int, y:int, z:int) -> int:

    result = 1 # 刚开始时必有一只成虫
    times = list(range(x, z-1, x))
    # 列表表示生产的时间,因为虫需两个月成长,因此结束值-1(range函数生成的列表不包括结束值,达到-2效果)
    
    for i in times:
        result += 2 * y * math(x, y, z-i-2)
        # 已经过了i个月,且需2个月成长,因此减去(i+2),递归,求剩余时间里这些虫能再生几个

    return result

x = int(input('x:'))
y = int(input('y:'))
z = int(input('z:'))

print(math(x, y, z))

匆忙之下写成,可能有些不准确、不严谨。如果能帮到你,望采纳!

n = z//x+1
f(n) = f(n-1)*(y+1)
f(1) = 1
是这样吗

虫子只生一次卵吗