add_step($tower); resolveHanoi($tower,$steps); function resolveHanoi(Tower $tower, Steps $steps){ $result = false; if($tower->is_won()){ echo "a winning suite was found:\n"; foreach($steps->steps as $oneTower){ echo $oneTower."\n"; } return true; } $availablesMoves = $tower->list_moves_availables(); foreach($availablesMoves as $move){ $newTower = $tower->add_move($move); $newSteps = $steps; if($newSteps->add_step($newTower)){ $r = resolveHanoi($newTower,$newSteps); if($r){ $result = true; } } } return $result; }