Рекурсія
Рекурсією називається виклик функції самої себе. Такий виклик називається рекурсивним. Рекурсія буває пряма і непряма. Розглянемо приклад прямої рекурсії (див. лістинг 8.7).
Лістинг 8.7. Пряма рекурсія
<?
function fact ($x)
{
if ($x==0) return 1;
else return $x*fact($x-l);
}
echo fact (7);
?>
Як ви вже встигли здогадатися, функція fact () обчислює факторіал x!. Функція fact () у своєму тілі викликає саму себе — це і є пряма рекурсія. Непряма рекурсія виникає, коли перша функція викликає другу, а друга — першу.
Механізм рекурсії одночасно дуже корисний, але і дуже небезпечний. При створенні рекурсивних функцій потрібно бути особливо уважним, щоб уникнути зациклення. Наступна функція викличе зациклення (див. лістинг 8.8).
Листинг8.8. Некорректноєіспользованіє рекурсії
function fact($x)
{
if ($x==0) return 1;
else return $x*fact($x);