Нехронологический возврат (или обратный переход, как его обычно называют) может быть реализован в решателях, которые используют рекурсию для присвоения переменных. На языках, которые поддерживают нелокальные переходы, вы обычно используете этот метод. Например, в языке C вы должны использовать setjmp () для записи точки в стеке и longjmp () для обратного перехода к этой точке. C # имеет блоки try-catch, языки Lispy могут иметь catch-throw и т. Д.
Если язык не поддерживает нелокальный переход, вы можете добавить замену в свой код. Вместо того, чтобы dpll () возвращала FALSE, она возвращает кортеж, содержащий FALSE и количество уровней, которые необходимо отследить. Вызывающие абоненты уменьшают счетчик в кортеже и возвращают его, пока не вернется ноль.