Page 61 - Программирование. Python. Для школьников. bizdin.kg
P. 61
РЕКУРСИЯ 61
Ушуну эле циклдин жардамында да жасаса болот. Мындан маанилүү кору-
тунду чыгат: рекурсия циклди алмаштырат. Ошону менен бирге програм-
ма көпчүлүк учурда түшүнүктүүрөөк болуп калат.
3-маселе. a санын b даражасына көтөрүү (a**b) үчүн рекурсивдүү функция-
ны жазалы.
Санды даражага көтөрүүнүн алгоритми төмөнкүдөй аткарылат:
(a *…(a * (a * (a *(a * 1)))))
Математика курсунан биз а**0 = 1 экенин би- ЭСИҢЕ ТУТ
лебиз. Чексиз рекурсиянын
Маселени чыгаруу: жыйынтыгын чыгаруу-
ну токтотуу үчүн Ctrl+C
def func_step(a, b): баскычтарынын ком-
if b == 0: бинациясын консолдо
return 1 басуу керек.
else:
return a * func_step(a, b-1)
print(func_step(2, 4)) #мисалы, 2нин 4-даражасы
>>>
16 #жыйынтык
БУЛ КЫЗЫКТУУ!
Рекурсиянын адамдын жашоосундагы мисалдары:
• Сиз банкка процентке акча салдыңыз жана эсептелген про-
центтер сиздин эсебиңизде банкта калат жана аларга да проценттер
эсептелет. Сиз качан банктан чогулган акчаларды алып кеткенче, про-
цесс улана берет.
• Бири-бирине караган күзгүлөрдөгү объекттин чагылышы да
чексиз рекурсиянын мисалы болот.
КОМПЬЮТЕРДИК ПРАКТИКУМ:
1) n натуралдык саны берилген. 1ден n ге чейинки бардык нату-
ралдык сандарды чыгаргыла.
2) n берилген саны үчүн 1ден n ге чейинки бардык сандардын сум-
масын чыгаруучу рекурсивдүү функцияны жазгыла.
www.trk.kg