Предполагается, что эта программа найдет все возможные пути через лабиринт и сохранит самое дальнее расстояние, которое она получила, в глобальной переменной. Вместо этого он проходит только один путь, а затем заканчивается? Я предполагаю, что я не использую рекурсию правильно или что-то в этом роде. $ draw_co2 — это массив значений 0 и 1, где 1 — это путь, а 0 — стена. Я включил вывод из точек, собранных $ GLOBALS [‘route’] поверх самого лабиринта ниже. Исходя из кода, я ожидаю, что вся основная красная ветвь будет белой?
Я использовал другое, если вместо всего прочего. Как упомянуто ниже, используйте else для изучения всех ветвей.
Нет проблем с рекурсией в фрагменте кода. Я думаю, что единственное, что может быть причиной этого, это $draw_co2
, Я думаю, что нет пути в $draw_co2
какая рекурсия может пройти. Для тестирования я бы порекомендовал создать определенный путь в массиве $draw_co2
и передать начальные координаты в функции рекурсии. Надеюсь, поможет.
РЕДАКТИРОВАТЬ
Если вы измените все свои else if
только if
, это может пересечь все пути.
Других решений пока нет …