Итак, я видел несколько решений для этой проблемы или подобных проблем, но я действительно хочу знать, почему мой не работает. Это намного легче читать, чем множество решений, которые я нашел, поэтому я хотел бы заставить его работать!
Начиная с 1 пары кроликов, которые начнут воспроизводиться через 2 месяца. Бегите в течение n месяцев, когда кролики умирают после того, как они прожили в течение месяцев. Ввод "6 3" должен возвращать 4, но он возвращает 3.
#run for n months, rabbits die after m months.
n, m = input("Enter months to run, and how many months rabbits live, separated by a space ").split()
n, m = int(n), int(m)
generations = [1, 1, 2] #Seed the sequence with the 1 pair, then in their reproductive month.
def fib(i, j):
count = 3 #we start at the 3rd generation.
while (count < i):
if (count < j):
generations.append(generations[count-2] + generations[count-1]) #recurrence relation before rabbits start dying
else: #is just the fib seq (Fn = Fn-2 + Fn-1)
generations.append((generations[count-2] + generations[count-1]) - generations[(count-j)]) #Our recurrence relation when rabbits die every month
count += 1 #is (Fn = Fn-2 + Fn-1 - Fn-j)
return (generations[count-1])
print (fib(n, m))
print ("Here how the total population looks by generation: \n" + str(generations))
Спасибо =]