Автор | Сообщение |
|
Отправлено: 21.06.21 13:30. Заголовок: №455
Исполнитель Калькулятор преобразует число на экране. У исполнителя есть две команды, которым присвоены номера: 1. Прибавить 1 2. Умножить на 2 Программа для исполнителя Калькулятор – это последовательность команд. Сколько существует программ, для которых при исходном числе 5 результатом является число 60 и при этом траектория вычислений содержит число 8 и не содержит числа 22? в ответах 38, у меня 88 def F(a,b): if a<b: return F(a+1,b)+F(a*2,b) if a == b: return 1 if a>b or a == 22: return 0 print(F(5,8)*F(8,60))
|
|
|
Ответов - 3
[только новые]
|
|
|
| Администратор
|
Сообщение: 2888
|
|
Отправлено: 21.06.21 15:16. Заголовок: Перетащите наверх ба..
Перетащите наверх базовые случаи: цитата: | def F(a,b): if a == b: return 1 if a>b or a == 22: return 0 if a<b: return F(a+1,b)+F(a*2,b) print(F(5,8)*F(8,60)) |
|
|
|
|
|
Отправлено: 21.06.21 15:20. Заголовок: Спасибо, помогло! Но..
Спасибо, помогло! Но не подскажите, почему так происходит?
|
|
|
|
| Администратор
|
Сообщение: 2889
|
|
Отправлено: 21.06.21 15:23. Заголовок: Потому что при базов..
Потому что при базовых случаях рекурсивный вызов делать не нужно.
|
|
|
|