Ошибка 1: Забыли возврат (удаление из списка)
АЛГОРИТМ СломанныйПоиск(решение, осталось)
ЕСЛИ осталось = 0 ТО
ВЫВЕСТИ решение
ВЫЙТИ ИЗ АЛГОРИТМА
КОНЕЦ ЕСЛИ
ДЛЯ КАЖДОЙ цифры ИЗ [1, 2, 3] ВЫПОЛНЯТЬ
ДОБАВИТЬ цифру В КОНЕЦ решение
СломанныйПоиск(решение, осталось - цифра)
// Забыли УДАЛИТЬ ПОСЛЕДНИЙ ЭЛЕМЕНТ!
КОНЕЦ ЦИКЛА
КОНЕЦ АЛГОРИТМА
Результат: [1,1,1], [1,1,1,2], [1,1,1,2,3]... — список растёт бесконечно!
Ошибка 2: Нет базового случая
АЛГОРИТМ Бесконечность(решение, осталось)
ДЛЯ КАЖДОЙ цифры ИЗ [1, 2, 3] ВЫПОЛНЯТЬ
ДОБАВИТЬ цифру В КОНЕЦ решение
Бесконечность(решение, осталось - цифра)
УДАЛИТЬ ПОСЛЕДНИЙ ЭЛЕМЕНТ ИЗ решение
КОНЕЦ ЦИКЛА
// Нет условия остановки!
КОНЕЦ АЛГОРИТМА
Алгоритм никогда не остановится (пока не закончится память)
Ошибка 3: Отсечение после рекурсии
// Неправильно:
Поиск(решение, осталось - цифра)
ЕСЛИ осталось < 0 ТО ВЫЙТИ // уже поздно!
// Правильно:
ЕСЛИ осталось < 0 ТО ВЫЙТИ // сначала проверка
Поиск(решение, осталось - цифра)
Тратим время на заведомо неверные ветки