ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Рекурсия.

 

4875
ValdeZ @ValdeZ
Есть код:
function fac($n){
if ($n <= 0){
return 1;
}
else
return $n * fac($n-1);
}

echo fac(7);

Функция выводит в результате факториал числа. Применяется рекурсия.
Вопрос: почему нельзя создать любую другую функцию без условия, а просто:
function fac($n){
return $n * fac($n-1);

echo fac(7);

Выведет ошибку, что "maximum function nesting '100'......" ничего не понятно, в общем.
И вообще, хочется увидеть пример подобных рекурсий. Примеры, пожалуйста, как можно проще.
Без всяких там жизненных случаев, типа перебор деревья каталогов, подключение к БД или ещё что-то. Самое простое.
-----------------------------
return $some? "true": "false";
Ещё очень хочется узнать, эквивалентом чему является подобная конструкция (return не интересует, имею введу "?", ":").
Методом "тыка" выяснил, что это проверка переменной на истину/ложь, краткая запись if/else для случая проверки булевого типа, так?

Отредактировано ValdeZ - 08.06.2010
20090
Dimitry @Dimitry
а смысл создаваиь бесконечную рекурсию? тебе и написали что не больше 100 повторений!

4875
ValdeZ @ValdeZ
Хорошо, тогда тем условием контролировалось количество повторений?
То есть так в любой рекурсии надо указывать условие?

Отредактировано ValdeZ - 08.06.2010
20090
Dimitry @Dimitry
я думаю надо избегать зацикливание

1130
Александр @WestSide
На счет первого... тоже пытаюсь не использовать рекурсию, хотя иногда она просто необходима... например копирование папки в другую папку со всеми файлами и подпапками...
На счет второго... это анологичный синтаксис:
(условие) ? (если условие истинно) : (если условие ложно)

4875
ValdeZ @ValdeZ
Понял, всем спасибо.

20090
Dimitry @Dimitry
рекурсия работает отлично, если нет зацикливания!