Листинг всех директорий сервера

Фанат

oncle terrible
Команда форума
извини, но в твоих словах нет логики.
Для ПОНИМАНИЯ принципа рекурсии код Gorynych ХУЖЕ, чем твой.
поскольку он больше размером, и ты не знаешь, что там относится к рекурсии, а что - к другим вещам.

так что придумай что-нибудь поправдоподобнее.

-~{}~ 07.06.06 11:29:

Вот мы нашли subdir1.1.1.1, но теперь надо просканировать subdir1.1.1 и выше...
у тебя там цикл
ты понимаешь, что такое цикл?
после того, как функция вызовет себя для subdir1.1.1.1, она ПРОДОЛЖИТ в цикле обходить subdir1.1.1
что тут непонятного?
 

Ugnich_Andrey

Новичок
Да этот код сложнее. Я понимаю что он делает, и циклы понимаю. Но только до вызова рекурсии.

Вот пример, чего я не понимаю:
Код:
функция рекурс(){
конструкция 1;
конструкция 2;
вызов рекурс();
конструкция 4; // А ЧТО С ЭТОЙ СТРОЧКОЙ?
}
По моей логике работать это будет так (при вызове рекурс()):
конструкция 1;
конструкция 2;
// ВЫЗОВ
конструкция 1;
конструкция 2;
// ВЫЗОВ
конструкция 1;
конструкция 2;
.....
Получается, что конструкция 4 никогда не будет вызвана? Или как?

С факториалом, в частности, другая ситуация:
функция фактор(){
конструкция 1;
конструкция 2;
вызов фактор();
} // КОНЕЦ. ТУТ НИЧЕГО НЕТ, все понятно (Да, кстати я понял наконец как это работает. :)

Сформулирую так вопрос: что будет с конструкциями функции, которые находятся ПОСЛЕ ее вызова самой в себе?
Функция ведь от того и рекурсивная что сама себя вызывает.
Это меня и путало.
 

Ugnich_Andrey

Новичок
Провел тест вот над этим:
PHP:
function test_recursion($x){
$x++;
echo "1-st test str: $x<br>";
if ($x==5){
	return $x;
};
test_recursion($x);
echo "2-st test str: $x (must be invisible)<br>";

}

test_recursion(0);
и получил
Код:
1-st test str: 1
1-st test str: 2
1-st test str: 3
1-st test str: 4
1-st test str: 5
2-nd test str: 4 (must be invisible)
2-nd test str: 3 (must be invisible)
2-nd test str: 2 (must be invisible)
2-nd test str: 1 (must be invisible)
теперь понятно как это работает...
 
Сверху