Автор | Сообщение |
|
Отправлено: 19.06.22 09:21. Заголовок: ЗАДАЧА 4550 ИЗ КЕГЭ
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Добавить к числу два 2. Добавить само число 3. Домножить на само число Программа для исполнителя - это последовательность команд, которые увеличивают число. Найдите количество программ с нечетной длиной, которые из числа 1 могут получить 100. Мое решение: def f(curr,end,step): if curr>end: return 0 if curr==end and step%2==0: return 0 if curr==end and step%2!=0: return 1 if curr<end and step%2!=0: return f(curr+2,end,step+1)+f(curr*2,end,step+1)+f(curr*curr,end,step+1) print(f(1,100,0)) В чем не верно рассуждаю. Задача дает None
|
|
|
Ответов - 2
[только новые]
|
|
|
Отправлено: 19.06.22 10:36. Заголовок: Нашла одну ошибку, 1..
Нашла одну ошибку, 1 саму на себя умножать нельзя, но все равно None, где-то ошибка с шагом def f(curr,end,step): if curr>end: return 0 if curr==end and step %2==0: return 0 if curr<end and step %2!=0 and curr==1: return f(curr+2,end,step+1)+f(curr*2,end,step+1) if curr<end and step %2!=0 and curr>1: return f(curr*curr,end,step+1)+f(curr+2,end,step+1)+f(curr*2,end,step+1) print(f(1,100,0)
|
|
|
|
| Администратор
|
Сообщение: 3604
|
|
Отправлено: 24.06.22 11:09. Заголовок: None означает, что ф..
None означает, что функция не возвращает никакого результата при основном вызове. def f(curr,end,step): if curr>end: return 0 if curr == end: if step % 2 == 0: return 1 else: return 0 if curr == 1: return f(curr+2,end,step+1) + f(curr*2,end,step+1) else: return f(curr*curr,end,step+1) + f(curr+2,end,step+1) + f(curr*2,end,step+1) print(f(1,100,0))
|
|
|
|