Другие языки программирования и технологии

Есть ли фактические параметры в рекурсивной функции? В ней же нет вызова функции?

1) Фактические параметры принято называть АГРУМЕНТАМИ функции.
2) В ней есть вызов функции самой на себя.

Когда это полезно:

Например функция удаления папок - а что если в этой папке есть вложенные папки, а в тех вложенные папках есть еще папки? К примеру Total Commander, FileZilа работают по такому принципу - они удаляют / переименовывают рекурсивно.

Реализация на PHP будет выглядеть примерно так:

function rm_dir($dir)
{
$dir = scandir($dir); // <-- получить список папок в качестве массива
foreach($dir as $item){ // <-- начать итерацию
if ( is_dir($item) ) { // <-- в случае если текущая папка содержит под-каталоги
rm_dir(); // <-- вызвать саму себя
} else {
rmdir($item); // <-- реализация самой функции
}
}
}

Что бы было если бы не было рекурсии:
Пришлось бы писать вложенными циклами с проверкой на условия - что ведет к дупликации и наростанию кода.

Недостатки.
Рекурсия "поедат" экспотенциально оперативную память по мере наростания суб-задач.

--------------

Мешает работать функции с глобальными параметрами - Паттерны проектирования ПО, ООП
Глобальные переменные ДОЛЖНЫ использоватся в процедурном коде.
А процедурный код, ИМХО, - ацтой
Владимир Трофимов
Владимир Трофимов
4 333
Лучший ответ
Функция в некоторых языках обязана возвращать значение, но ничто не мешает функции работать с глобальным параметром, если есть глобальные переменные.
Возьми хотбы слово это переведи с грехом пополам. ) Re:....
что вы имеете ввиду? рекурсивная функция, она на то и рекурсивная, что вызывает саму себя
int fuck(int n)
{
if (n == 0) //Условие выхода из рекурсии
return 1;
return n*fuck(n - 1); вызов функции
}
fuck(r) r- фактический параметр
где непонятно?
Слава Петров
Слава Петров
1 294