Это проблема, над которой я работаю: http://rosalind.info/problems/fibd/
Я пытаюсь обобщить переменную m
в следующем коде:
def fibonnaciMortalRabbit(n, m):
#Set up list of of m different generation categories
rabbits = [0 for x in range(m)]
#Initate first rabbit pair
rabbits[0] = 1
#n - 1 to calculate right generation
for i in range(n - 1):
if m == 2:
rabbits[0], rabbits[1] = rabbits[1], rabbits[0]
elif m == 3:
rabbits[0], rabbits[1], rabbits[2] = rabbits[1] + rabbits[2], rabbits[0], rabbits[1]
elif m == 4:
rabbits[0], rabbits[1], rabbits[2], rabbits[3] = rabbits[1] + rabbits[2] + rabbits[3], rabbits[0], rabbits[1], rabbits[2]
elif m == 5:
rabbits[0], rabbits[1], rabbits[2], rabbits[3], rabbits[4] = rabbits[1] + rabbits[2] + rabbits[3] + rabbits[4], rabbits[0], rabbits[1], rabbits[2], rabbits[3]
return sum(rabbits)
print(fibonnaciMortalRabbit(8, 2))
Есть ли способсделать обобщение для условных операторов, используя переменную m
в цикле?
Я уверен, что есть лучший способ решить эту проблему, однако то, что я сделал до сих пор, работает хорошо для случаев, когда у меня естьусловное утверждение для m.
Текущая проблема, над которой я работаю, состоит в том, что m < 20
, поэтому я не пишу почти 20 различных утверждений elif.