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

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

javascriptlet i = 1;

function func(){
  console.log(i);
  i++;
  
  if (i <= 10){
    func(); // бу ерда функция ўзини ўзи чақирмоқда
  }
}
func();

Келибги, бу код кандай ишлашини муҳокама килайлик.

Бизда i глобал ўзгарувчиси ва func функцияси мавжуд бўлиб, унинг ичида консолга i ўзгарувчисининг қиймати чиқарилади, сўнгра ++ амали бажарилади.

Агар бизнинг i ўзгарувчимиз 10 дан кичкина ёки тенг бўлса, функция кайтадан чақирилади. i ўзгарувчиси глобал бўлгани сабабли, функциянинг ҳар битта янги чақирилишида унда олдинги чақириқда белгиланган i ўзгарувчисининг қиймати сақланади.

Натижада, функция i 10 дан катта бўлгунча ўзини ўзи чақириб туради.

Эътибор бering, бизнинг ҳолимизда функцияни if шартисиз ишга тушуриб бўлмайди - агар бу амалга оширилса, функцияларнинг чексиз чақирилиши вужудга келади.