Page 60 - Программирование. Python. Для школьников. bizdin.kg
P. 60
60 PYTHON ПРОГРАММАЛОО ТИЛИ РЕКУРСИЯ
2-маселе. Натуралдык санды экилик системага которо турган функцияны
түзүп көрөлү. Санды экилик системага которуунун стандарттык алгоритмин
мындай жазса болот:
def printBin (n):
while n!= 0:
print (n % 2, end = '')
n = n // 2
printBin(14) #функцияны чакыруу үчүн мисалы 14 санын киргизели
>>>
0111 #жыйынтык
Негизги проблема бул, экилик сандар тескери, б.а. биринчи кезекте акыркы
разряд чыгарылгандыгында.
Бул маселени чыгаруунун ар кандай ыкмалары бар. Алардын бардыгы
бөлүүдөн кийин калдыктарын эстеп калып (мисалы, символдук сапка), ан-
дан соң бардык жыйынтык алынгандан кийин гана аны экранга чыгарууга
негизделген.
Рекурсияны колдонуп көрөлү. Идея мындай: n санынын экилик жазуусун
чыгаруу үчүн, алгач n//2 санынын экилик жазуусун чыгаруу керек, андан
кийин анын калдыгын бөлүп чыгуу керек (n%2). Эгерде алынган сан (пара-
метр) нөлгө барабар болсо, анда функциядан чыгуу керек. Мисал үчүн 14
санын алалы:
14 // 2 = 7, 7 % 2 = 1
7 // 2 = 3, 3 % 2 = 1
3 // 2 = 1, 3 % 2 = 1
1 // 2 = 0, чыгуу
Мындай алгоритм эң жөнөкөй программаланат. print_bin аталыштагы
функцияны жазалы:
def print_bin (n):
if n == 0: return 0
print_bin (n // 2)
print (n % 2, end = '') #калдыктарды бир сапка жазуу
printBin (14) #функцияны чакыруу үчүн мисал катары 14 санын
киргизебиз
>>>
1110 #жыйынтык
www.trk.kg