Top.Mail.Ru
Ответы

Составь программу с использованием рекурсивного алгоритма для вычисления значения функции G(n). Алгоритм задан..

Составь программу с использованием рекурсивного алгоритма для вычисления значения функции G(n).
Алгоритм задан следующими отношениями:
G(1) = 1;
G(n) = G(n - 1) + 2 + n, n> 1.
Вычисли значение функции G(9).
У меня получилось так:
def G(n):
if n==1:
return 1
elif n>1:
return G(n - 1) + 2 + n
else:
return "ошибка"
print(G (9))
Выводится 61.
Правильная ли это программа, если нет, то как правильно записать?

По дате
По рейтингу
Аватар пользователя
Высший разум
5мес

Программа правильная, только вот для решения задачи рекурсия не требуется.

12345678
 G(1) = 1 = 3 - 2
G(2) = G(1) + 4 = (3 + 4) - 2
G(3) = G(2) + 5 = (3 + 4 + 5) - 2
...
G(N) = (3 + ... + (N + 2)) - 2

# берём формулу суммы арифметической прогрессии из школьного учебника математики
G(N) = N * (3 + N + 2) / 2 - 2 = N * (N + 5) / 2 - 2 

Вся программа:

12
 def G(n): return n * (n + 5) // 2 - 2
print(G(9))