Форум » Динамическое программирование » №455 » Ответить

№455

runkas: Исполнитель Калькулятор преобразует число на экране. У исполнителя есть две команды, которым присвоены номера: 1. Прибавить 1 2. Умножить на 2 Программа для исполнителя Калькулятор – это последовательность команд. Сколько существует программ, для которых при исходном числе 5 результатом является число 60 и при этом траектория вычислений содержит число 8 и не содержит числа 22? в ответах 38, у меня 88 [pre2] 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)) [/pre2]

Ответов - 3

Поляков: Перетащите наверх базовые случаи: [pre2] 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))[/pre2]

runkas: Спасибо, помогло! Но не подскажите, почему так происходит?

Поляков: Потому что при базовых случаях рекурсивный вызов делать не нужно.




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