Base Case and Recursive Case

Rekursiv funktsiya o'zini chaqirganligi sababli, cheksiz tsikl bilan tugaydigan funktsiyani noto'g'ri yozish oson.

Base case and recursive case

Rekursiv funktsiya o'zini chaqirganligi sababli, cheksiz tsikl bilan tugaydigan funktsiyani noto'g'ri yozish oson. Misol uchun, siz ortga hisoblashni chop etuvchi funktsiyani yozmoqchisiz, deylik:

Key

> 3...2...1

Siz uni rekursiv tarzda yozishingiz mumkin, masalan:

Python

def countdown(i):
    print i
    countdown(i-1)

Golang

func countdown(i int) {
    fmt.Println(i)
    countdown(i-1)
}

Ushbu kodni yozing va uni ishga tushiring. Muammoni sezasiz: bu funksiya abadiy ishlaydi!

Infinitive loop

> 3...2...1...0...-1...-2...-3...

(Skriptingizni o'chirish uchun Ctrl-C tugmalarini bosing.) Rekursiv funktsiyani yozganingizda, uni qachon takrorlashni to'xtatish kerakligini aytishingiz kerak. Shuning uchun har bir rekursiv funktsiya ikki qismdan iborat: asosiy va rekursiv holat. Rekursiv holat - bu funksiya o'zini chaqirganda. Asosiy holat - bu funktsiya o'zini qayta chaqirmasa ... shuning uchun u cheksiz tsiklga kirmaydi.

Ortga hisoblash funksiyasiga asosiy registrni qo'shamiz:

Base case

Python

def countdown(i):
    print i
    if i <= 0:
        return
    else:
        countdown(i-1)

Golang

func countdown(i int) {
    fmt.Println(i)
    if i <= 0 {
        return
    } else {
        countdown(i-1)
    }
}
Recursive case

Endi funksiya kutilganidek ishlaydi. Bu shunga o'xshash narsaga o'tadi.

Recursive case

Ushbu sahifada

Xato haqida xabar berish