@ Rup уже дал одно стандартное решение - метод динамического программирования снизу вверх.
Подход сверху вниз - написать рекурсивную функцию ... а затем запомнить ее .То есть, когда вызывается ваша функция, вы сначала проверяете, видели ли вы это раньше (т. Е. Заглядываете в словарь, чтобы узнать, есть ли у вас «памятка» об ответе), а если нет, вычисляете ответ исохрани это.Затем вы возвращаете запомненный ответ.
Применяются обычные компромиссы:
- Сверху легче вычислить и написать.
- Снизу вверх вы видите, что выне нужно хранить ответы с 2 кубиками, когда у вас есть 3 кубика, и, следовательно, снижает требования к рабочей памяти.
Поэтому полезно знать оба подхода, но я всегда беру сверху внизподход первый.