Recursive

...

SU

Go Rekursiya Funktsiyalari

Rekursiya Funktsiyalari

Go rekursiya funktsiyalarini qo'llab-quvvatlaydi. Funktsiya rekursiv bo'lishi uchun u o'zini chaqirishi va to'xtash shartiga erishishi kerak.

Quyidagi misolda, testcount() o'zini chaqiradigan funktsiya. Biz x o'zgaruvchisini ma'lumot sifatida ishlatamiz, bu har safar rekursiya qilganda 1 ga oshadi (x + 1). Rekursiya x o'zgaruvchisi 11 ga teng bo'lganida (x == 11) 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
10

Rekursiya matematik va dasturlashda keng tarqalgan tushunchadir. Bu ma'lumotni qayta ishlash orqali natijaga erishishga yordam beradi.

Dasturchi rekursiya funktsiyalari bilan ehtiyot bo'lishi kerak, chunki funktsiya tugamaydi yoki ortiqcha xotira yoki protsessor kuchini talab qilishi mumkin. Biroq, to'g'ri yozilganida rekursiya dasturlashning juda samarali va matematik jihatdan nafis yondashuvi bo'lishi mumkin.

Quyidagi misolda, factorial_recursion() o'zini chaqiradigan funktsiya. Biz x o'zgaruvchisini ma'lumot sifatida ishlatamiz, bu har safar rekursiya qilganda -1 ga kamayadi. Rekursiya shart 0 dan katta bo'lmaganda tugaydi (ya'ni, 0 bo'lganda).

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 dasturchilar uchun bu qanday ishlashini tushunish uchun biroz vaqt kerak bo'lishi mumkin. Eng yaxshi yo'l - uni sinab ko'rish va o'zgartirishdir.

Ushbu sahifada

GitHubda tahrirlash