Форум » Динамическое программирование » 165 задание не сходится ответ » Ответить

165 задание не сходится ответ

Calabras123: 165) Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавь 1 2. Прибавь 3 3. Умножь на 2 Первая команда увеличивает число на экране на 1, вторая увеличивает его на 3, третья – умножает на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, которые преобразуют исходное число 1 в число 14 и при этом не содержат двух команд умножения подряд? Какая ошибка в коде? def f(x,y,k): if x>y: return 0 if x==y: return 1 if k==2: return f(x+1,y,k)+f(x+3,y,k) else: return f(x+1,y,k)+f(x+3,y,k)+f(x*2,y,k+1) print(f(1, 14, 0)) Буду искренне благодарен за помощь!

Ответов - 1

H1ghRate: Вы создаете программы, в которых не может быть двух команд умножения подряд, а Вам нужно лишь проверить на входе не было ли там двух команд умножения подряд. [pre2]def f (x, y, k): if k == 2: return 0 if x > y: return 0 if x == y: return 1 else: return f(x + 1, y, 0) + f(x + 3, y, 0) + f(x * 2, y, k + 1) print(f(1, 14, 0))[/pre2]



полная версия страницы