- Published on
Swiftda Rekursiya
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Biror funksiyaning o‘zi-o‘zini chaqirishi rekursiv funksiya deyiladi. Bu texnika esa rekursiya deb ataladi.
Real hayotdagi misol: ikkita parallel ko‘zguni bir-biriga qarama-qarshi qo‘ying. Ularning orasiga biror buyum qo‘yilsa, u cheksiz qayta aks etadi — bu rekursiyaga o‘xshaydi.
Rekursiyaning ishlash tizimi
func recurse() {
... ...
recurse()
... ...
}
recurse()
Bu yerda recurse() funksiyasi o‘zi-o‘zini qayta-qayta chaqirmoqda. Quyidagi rasm rekursiya qanday ishlashini ko‘rsatadi:

Rekursiyani to‘xtatish sharti
Agar rekursiyani to‘xtatish uchun biror shart berilmasa, funksiya cheksiz o‘zini chaqiraveradi.
Rekursiyani to‘xtatish uchun odatda if...else ishlatiladi.
Har doim rekursiv funksiyada ikki bo‘lak bo‘ladi:
- Rekursiv chaqiruv bo‘lagi
- Rekursiyani to‘xtatadigan bo‘lak
Misol:
func recurse() {
if(condition) {
// rekursiv chaqiruvni to‘xtatish
recurse()
}
else {
// rekursiv chaqiruv
recurse()
}
}
// funksiyani chaqirish
recurse()
Misol:
Quyidagi dastur sonni 0 gacha kamaytirib boradi:
// sonni 0 gacha sanab tushish dasturi
func countDown(number: Int) {
// sonni ekranga chiqarish
print(number)
// rekursiyani to‘xtatish sharti
if number == 0 {
print("Sanash to‘xtadi")
}
// rekursiya sharti
else {
// sonni kamaytirish
countDown(number: number - 1)
}
}
print("Sanash:")
countDown(number:3)
Natija:
Sanash:
3
2
1
0
Sanash to‘xtadi
Bu misolda countDown() funksiyasi o‘zi-o‘zini chaqiraveradi, toki son 0 bo‘lmaguncha.
number == 0 bo‘lganda rekursiya to‘xtaydi.
Dastur ishlash jarayoni:
| Iteration | Function call | number == 0 ? | |
|---|---|---|---|
| 1 | countDown(3) | 3 | false |
| 2 | countDown(2) | 2 | false |
| 3 | countDown(1) | 1 | false |
| 4 | countDown(0) | 0 | true (rekursiya to‘xtaydi) |
Misol:
func factorial(num: Int) -> Int {
// rekursiyani to‘xtatish sharti
if num == 0 {
return 1
}
// rekursiv chaqiruv
else {
return num * factorial(num: num - 1)
}
}
var number = 3
// funksiya chaqiruvi
var result = factorial(num: number)
print("3 ning faktoriali", result)
Natija:
3 ning faktoriali 6
Bu yerda rekursiv funksiya factorial() chaqiruv davomida num ni har safar 1 taga kamaytiradi.
Ishlash jarayoni:
- num = 3 → chaqiradi factorial(2)
- num = 2 → chaqiradi factorial(1)
- num = 1 → chaqiradi factorial(0)
- num = 0 → 1 qaytaradi va rekursiya orqaga yechila boshlaydi.
Rekursiya orqali faktorial hisoblash

Rekursiyaning afzalliklari va kamchiliklari
1. Afzalliklar
- Kodimiz qisqa va toza ko‘rinadi.
- Ma’lum data structure va murakkab algoritmlarda (Graf va Tree traversal) rekursiya zarur.
2. Kamchiliklar
- Iterativ dasturlarga qaraganda ko‘proq stack xotira ishlatadi.
- Ko‘proq process vaqtini oladi.
- Iterativ dasturlarga qaraganda debug qilish qiyinroq.