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

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

Calabras123: 165) Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавь 1 2. Прибавь 3 3. Умножь на 2 Первая команда увеличивает число на экране на 1, вторая увеличивает его на 3, третья – умножает на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, которые преобразуют исходное число 1 в число 14 и при этом не содержат двух команд умножения подряд? Какая ошибка в коде? [pre2] 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)) [/pre2] Буду искренне благодарен за помощь!

Ответов - 1

Поляков: Calabras123 пишет: Какая ошибка в коде? Вас интересует только две команды умножения ПОДРЯД, то есть третий параметр может быть двоичным: 1, если последней была команда умножения, и 0, если это одна из команд сложения. [pre2] def f(x,y,k): if x>y: return 0 if x==y: return 1 if k==1: return f(x+1,y,0)+f(x+3,y,0) else: return f(x+1,y,0)+f(x+3,y,0)+f(x*2,y,1) print(f(1, 14, 0)) [/pre2]



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