Рекурсия дар JavaScript
Дар барномасозӣ чунин мафҳуме вуҷуд дорад, ки
рекурсия - ин вақтест, ки функсия худро
фаро менамояд. Биёед дар мисол назар кунем.
Бо истифода аз рекурсия рақамҳо аз 1
то 10 чоп кунем:
let i = 1;
function func(){
console.log(i);
i++;
if (i <= 10){
func(); // ин ҷо функсия худро фаро менамояд
}
}
func();
Биёед баҳс кунем, ки ин рамз чӣ гуна кор мекунад.
Мо тағирёбандаи глобалӣ i
ва функсияи func дорем, ки дар дохили он ба консоль
муҳтавои тағирёбандаи i чоп мешавад,
ва сипас ++ иҷро мешавад.
Агар тағирёбандаи мо i хурдтар ё
баробар ба 10 бошад, пас функсия боз такрор фаро хонда мешавад.
Азбаски тағирёбандаи i - глобалӣ аст,
пас дар ҳар даъвати нави функсия дар он
қимати таъиншудаи тағирёбандаи i аз даъвати қаблӣ
нигоҳ дошта мешавад.
Натиҷа ин хоҳад буд, ки функсия то он даме
худро фаро менамояд, ки i зиёдтар аз
10 нашавад.
Дар назар доред, ки дар ҳолати мо функсияро
бе if оғоз кардан мумкин нест - агар ин кор анҷом дода шавад,
пас даъвати беохири функсияҳо ба даст хоҳад омад.