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:

> 3...2...1
Siz uni rekursiv tarzda yozishingiz mumkin, masalan:
Python
Golang
Ushbu kodni yozing va uni ishga tushiring. Muammoni sezasiz: bu funksiya abadiy ishlaydi!

> 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:

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

Last updated
Was this helpful?