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
   56   57   58   59   60   61   62   63   64   65   66