Автор | Сообщение |
|
Отправлено: 19.04.22 21:21. Заголовок: ege23 №182
Непоседливый Непоседа решил сыграть в игру. Он придумал исполнителя, преобразующего числа на доске и имеющего три команды: 1. Прибавь 2 2. Сделай чётное 3. Сделай нечётное Первая команда увеличивает число на 2, вторая команда преобразует число N в число 2N при условии, что оно является нечетным. Третья — преобразует четное число N в нечетное вида 2N+1. Сколько существует программ, которые преобразуют исходное число 2 в 35, а траектория вычислений программы содержит не более двух преобразований в нечетное? Мой код: def F(x, y, n): if x == y and n <= 2: return 1 elif x > y or n > 2: return 0 else: return F(x + 2, y, n) + F(x * 2, y, n) + F(x * 2 + 1, y, n + 1) print(F(2, 35, 0)) Мой ответ: 68 Ответ на сайте: 14 Вопрос: Подскажите, пожалуйста, где ошибка
|
|
|
Ответов - 2
[только новые]
|
|
|
Отправлено: 19.04.22 21:25. Заголовок: Решено..
Решено
|
|
|
|
Отправлено: 11.05.22 00:01. Заголовок: mcorleone, у тебя не..
mcorleone, у тебя нет в рекурсии условия проверки на четность и нечетность твоего числа 'x', поэтому твой код считает лишнее. Вот код: def F(x,y,n): if x == y and n <= 2: return 1 elif x > y or n > 2: return 0 else: if x % 2 == 0: return F(x + 2, y, n) + F(x * 2 + 1, y, n + 1) if x % 2 != 0: return F(x + 2, y, n) + F(x * 2, y, n) print(F(2,35,0))
|
|
|
|