Python. Рекурсии.
Фишки

Дана полоска из клеток, пронумерованных от 1 до N слева направо. Разрешено снимать или ставить фишку на клетку с номером 1 или на клетку, следующую за самой левой из установленных фишек (правее неё), если она пуста. Изначально полоска пуста. Нужно разместить фишки во всех клетках.

Входные данные

Программа получает на вход количество клеток в полоске N(1≤N≤10).

Выходные данные

Программа должна вывести последовательность номеров клеток, с которыми совершается действие. Если фишка снимается, то номер клетки должен выводиться со знаком минус. Количество действий не должно превышать 104. Если существует несколько возможных решений задачи, то разрешается вывести любое.

Примеры:
Ввод:
3
Вывод:
1 2 -1 3 1

Программа(работает только с нечётными числами, на других зависает):
from sys import setrecursionlimit
setrecursionlimit(10**9)
def f(a,i):
if a == 1:
print(1,end = ' ')
elif i == a - 1:
print(i+1,end = ' ')
f(a-2,1)
else:
print(i+1,-i,end = ' ')
f(a,i+1)
a = int(input())
print(1,end = ' ')
f(a,1)

nanamaz nanamaz    1   23.04.2020 03:48    116

Другие вопросы по теме Информатика