Мне почему-то кажется, что это была задачка на рекурсию (хотя предложенные выше решения через динамическое программирование, разумеется, лучше). def A
:
if n == 0:
return [0] # обработали крайний случай
A_lst = A(n-1) # создали список из всех предыдущих чисел
A_lst.append((A_lst[-1] + 3) / 2) # добавили к списку новое число по последнему сгенеренному
return A_lst
N = 10
print(*A(N)[1:]) # печатаем первые N чисел без начального нуля
Как по мне, разуме возвращать ответ именно списком, чтобы потом его можно было обрабатывать. Да, это заставляет нас хранить список в памяти, а не печатать числа на лету, но зато вы всегда можете доступиться к любому уже посчитанному числу и как угодно преобразовывать этот массив (считать по нему статистики, подавать на вход другой функции или что бы то ни было еще)