Rekursiya
Rekursiv funksiyalar
Go rekursiv funksiyalarni qo‘llab-quvvatlaydi. Agar funksiya o‘zini o‘zi chaqirsa va to‘xtash shartiga yetsa, u rekursiv funksiya hisoblanadi.
Quyidagi misolda testcount() — o‘zini o‘zi chaqiradigan funksiya. Ma’lumot sifatida x o‘zgaruvchisidan foydalanamiz, u har bir rekursiv chaqiruvda 1 ga ortadi (x + 1). x o‘zgaruvchisi 11 ga teng bo‘lganda (x == 11) rekursiya tugaydi.
Misol
package main
import "fmt"
func testcount(x int) int {
if x == 11 {
return 0
}
fmt.Println(x)
return testcount(x + 1)
}
func main(){
testcount(1)
}
Natija:
1
2
3
4
5
6
7
8
9
10Rekursiya — keng tarqalgan matematik va dasturlash tushunchasi. Uning afzalligi shundaki, natijaga erishish uchun ma’lumotlarni aylanib chiqishingiz mumkin.
Dasturchi rekursiv funksiyalar bilan ehtiyotkor bo‘lishi kerak, chunki hech qachon tugamaydigan yoki haddan tashqari ko‘p xotira yoki protsessor quvvatini sarflaydigan funksiya yozib qo‘yish juda oson. Biroq to‘g‘ri yozilganda rekursiya dasturlashda juda samarali va matematik jihatdan nafis yondashuv bo‘lishi mumkin.
Quyidagi misolda factorial_recursion() — o‘zini o‘zi chaqiradigan funksiya. Ma’lumot sifatida x o‘zgaruvchisidan foydalanamiz, u har bir rekursiv chaqiruvda 1 ga kamayadi (-1). Shart 0 dan katta bo‘lmay qolganda (ya’ni 0 ga teng bo‘lganda) rekursiya tugaydi.
Misol
package main
import "fmt"
func factorial_recursion(x float64) (y float64) {
if x > 0 {
y = x * factorial_recursion(x-1)
} else {
y = 1
}
return
}
func main() {
fmt.Println(factorial_recursion(4))
}
Natija:
24
Yangi dasturchiga bu aynan qanday ishlashini tushunib olish uchun biroz vaqt kerak bo‘lishi mumkin; buni bilishning eng yaxshi usuli — kodni sinab ko‘rish va o‘zgartirib ko‘rish.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
