JavaScriptda Rekursiya va Ko‘p o‘lchovli Strukturalar
Bizga ixtiyoriy darajadagi ichki o‘rnatilgan ko‘p o‘lchovli massiv berilgan, masalan:
let arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
Ko‘rib turganingizdek, bu massiv murakkab strukturaya ega, va bu strukturaning ixtiyoriy bo‘lishi va ichki o‘rnatish darajalari cheksiz chuqur bo‘lishi mumkin.
Faraz qilaylik, biz massivimizning barcha primitiv (ya'ni massiv bo‘lmagan) elementlarini konsolga chiqarmoqchimiz. Bunday holda, bu massivni takrorlash uchun sikllardan foydalanish mumkin emas, chunki massiv noto‘g‘ri strukturaya ega va noma'lum ichki o‘rnatish darajasiga ega.
Biroq, bunday massivni takrorlash uchun rekursiyadan foydalanish juda qulay.
Boshlash uchun, parametr sifatida massivimizni uzatadigan funktsiya yaratamiz va funktsiya ichida massivimizni takrorlash uchun sikl yaratamiz:
function func(arr) {
for (let elem of arr) {
console.log(elem);
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
Biz yaratgan sikl faqat asosiy massivning
elementlarini takrorlaydi. Ya'ni, avval
1 ni chiqaradi, keyin [2, 7, 8],
va keyin [3, 4, [5, [6, 7]].
Keling, endi siklda primitiv elementlar va massiv elementlarini ajratamiz:
function func(arr) {
for (let elem of arr) {
if (typeof elem == 'object') {
// element - massiv
} else {
// element - primitiv
console.log(elem);
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
Va endi shunday qilamizki, agar bizning elementimiz massiv bo‘lsa, funktsiya o‘zini chaqirsin, parametr sifatida ushbu massivni uzatib:
function func(arr) {
for (let elem of arr) {
if (typeof elem == 'object') {
func(elem);
} else {
console.log(elem);
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
Bizga ixtiyoriy darajadagi ichki o‘rnatilgan ko‘p o‘lchovli ob'ekt berilgan, masalan:
{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}
Rekursiya yordamida ushbu ob'ektning barcha primitiv elementlarini konsolga chiqaring.
Bizga ixtiyoriy darajadagi ichki o‘rnatilgan ko‘p o‘lchovli massiv berilgan, masalan:
[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]
Ko‘p o‘lchovli massivimizni bir o‘lchovliga yoyib beradigan kod yozing. Yuqoridagi massiv uchun natija quyidagicha bo‘ladi:
[1, 2, 7, 8, 3, 4, 5, 6, 7]