Для домашней работы мне пришлось решить задачу поиска с помощью метода Breadth-First-Search, и я решил сделать это на PHP (я не знаю, хорошая это идея или плохая), теперь проблема решена и Я могу напечатать решение двумя способами, но из этих двух способов один из них ведет себя странно.
Фрагмент кода, который относится к моей проблеме, таков:
$jarSet = new JarSet();
$searchTree[] = $jarSet;
foreach ($searchTree as $index => &$jarSet){
// echo '$index: '.$index.'<br>'; <--- Way#1: Works fine and shows correct indices
$success = jarFilledOneExistsIn($jarSet); //<--- Check whether any of the jars contains 1 litre of water
if(!$success){
generateChildren($jarSet,$searchTree);
} else {
// echo '$index: '.$index.'<br>'; <--- Way#2: Shows indices different from the ones in Way#1
print_solution($index,$jar_set_action_list);
}
if($index==10000) break; //<--- Keeps searching until index 10,000
}
Я ожидал, что оба $index
s напечатают одни и те же числа, но они разные, и я проверил их, оказалось, что числа, напечатанные первым способом, являются правильными ответами. Но почему на самом деле путь № 2 дает разные результаты?