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-ից մեծ:

Հաշվի առեք, որ մեր դեպքում անհնար է ֆունկցիան գործարկել առանց if - եթե դա արվի, ապա կստացվի ֆունկցիաների անվերջ կանչ: