function scanDir(string $path): array {
$result = [];
foreach (scandir($path) as $item) {
if ($item === '.' || $item === '..') continue;
$full = "$path/$item";
$result[] = is_dir($full) ? scanDir($full) : $full;
}
return $result;
}Рекурсія елегантна для задач з природньою деревоподібною структурою. Але кожен виклик займає місце в стеку. Глибока рекурсія може спричинити stack overflow. Для великих глибин — ітераційний підхід з власним стеком.