У меня есть функция, которая определяется таким образом:Итерационной версию этой рекурсивной функции
F(n) = n
if n<=3
F(n) = F(n-1) + 2 * F(n-2) + 3 * F(n-3)
if n>3
Теперь, я написал это как рекурсивная функция, и она отлично работает. Я пытаюсь написать его как итеративную функцию, но я не могу заставить ее произойти.
Выход должен быть, например:
print(FRec(5)) => 22
print(FRec(10)) => 1657
print(FRec(15)) => 124905
Любые советы?
Вот моя рекурсивная реализация:
def FRec(n):
if(n <= 3):
return n
if(n > 3):
return FRec(n - 1) + 2 * FRec(n - 2) + 3 * FRec(n - 3)
Это примеры, взятые из рабочего листа и точный результат рекурсивной функции. – mrpink121
А, нет, мои навыки чтения сбиты. Я отредактирую ваше сообщение, чтобы избежать этой ошибки для других. –
@MartijnPieters Сумма не F (n-1) + F (n-2) + F (n-3), это F (n-1) + 2F (n-2) + 3F (n-3) , 1 * 3 + 2 * 2 + 3 * 1 = 10 и 1 * 10 + 2 * 3 + 3 * 2 = 22. – BallpointBen