PHP да рекурсия билан ишлаш

Дasturlashda şuṇдай тушунча мавжудки, рекурсия - бу функция ўзини ўзи чақирганидир. Келгила, мисолда кўрамиз. Рекурсия ёрдамида 1 дан 10 гача бўлган рақамларни чиқарайлик:

php<?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 сиз ишга тушириб бўлмайди - агар бу амал бажарилса, функцияларнинг чексиз чақирилиши вужудга келади.