Что нам гарантирует, что запуская дальше программы для клеток
вы сможем выполнить обход (ведь мы сейчас в клетке
) ?
Мы не запускаем программу для клетки
.
На первом шаге мы запускаем программу для клетки
.
На втором шаге мы запускаем программу для той клетки, в которой мы должны быть сейчас, если начальная клетка была
.
На третьем шаге мы запускаем программу для той клетки, в которой мы должны быть сейчас, если начальная клетка была
.
В какой-то момент мы дойдем до клетки, с которой на самом деле начинали (не текущую итерацию, а вообще весь алгоритм), правильно определим, в какой клетке мы сейчас, и обойдем всё.
Обратите внимание, что в моей формализации, вторым аргументом
является
- клетка, в которой мы оказались, если настоящая начальная клетка
, а не просто
.