Рекурсия дар 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 оғоз кардан мумкин нест - агар ин кор анҷом дода шавад, пас даъвати беохири функсияҳо ба даст хоҳад омад.