Автор | Сообщение |
|
Отправлено: 15.01.23 13:47. Заголовок: 165 задание не сходится ответ
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
[только новые]
|
|
|
| Администратор
|
Сообщение: 3834
|
|
Отправлено: 26.01.23 11:25. Заголовок: Calabras123 пишет: К..
Calabras123 пишет: Вас интересует только две команды умножения ПОДРЯД, то есть третий параметр может быть двоичным: 1, если последней была команда умножения, и 0, если это одна из команд сложения. 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))
|
|
|