PHP да рекурсия билан ишлаш
Дasturlashda şuṇдай тушунча мавжудки,
рекурсия - бу функция ўзини ўзи чақирганидир.
Келгила, мисолда кўрамиз.
Рекурсия ёрдамида 1 дан 10 гача бўлган рақамларни чиқарайлик:
<?php
$i = 1;
function func()
{
global $i;
echo $i;
$i++;
if ($i <= 10){
func(); // бу ерда функция ўзини ўзи чақирмоқда
}
}
func();
?>
Келгила, бу код кандай ишлашини муҳокама қилайлик.
Бизда глобал $i ўзгарувчиси
ва func функцияси мавжуд бўлиб, унинг ичида консолга
$i ўзгарувчисининг қиймати чиқарилади,
сўнгра ++ амали бажарилади.
Aгар бизнинг $i ўзгарувчимиз 10 дан кичкина ёки
тенг бўлса, функция қайтадан чақирилади.
$i ўзгарувчиси глобал бўлгани сабабли,
функциянинг ҳар битта янги чақирилишида унда
$i ўзгарувчисининг олдинги чақириқда белгиланган қиймати
мавжуд бўлади.
Натижада функция $i
10 дан катта бўлгунча ўзини чақириб туради.
Эътиборингизга олинг, бизнинг ҳолимизда функцияни
if сиз ишга тушириб бўлмайди - агар бу амал бажарилса,
функцияларнинг чексиз чақирилиши вужудга келади.