• Rekursiya chuqurligi
  • 43. Shablon tushunchasi, funktsiya shabloni misol yordamida tushuntirib bering
  • Rekursiya chuqurligi nima, rekursiv va iteratsion algoritmlarning o’zaro farqi?




    Download 5,63 Mb.
    bet22/71
    Sana18.12.2023
    Hajmi5,63 Mb.
    #122750
    1   ...   18   19   20   21   22   23   24   25   ...   71
    Bog'liq
    Test gift and xml-fayllar.org

    42. Rekursiya chuqurligi nima, rekursiv va iteratsion algoritmlarning o’zaro farqi?
          • Shuning uchun ham rekursiyani qo’llashda quyidagiga alohida e’tibor berish kerak:




          • Rekursiya chuqurligi (tarkibidagi chaqiruvlar soni) – yetarli darajada kichik bo’lishi shart.
          • Katta chuqurlikdagi rekursiyadan foydalanishda dasturda uzoq vaqt ishlash va stekning to’lib toshib ketishi (stekli xotiraning yetishmovchiligi) holati yuz berishi mumkin. Shuning uchun ham, agar masalani rekursiyasiz ham yechish mumkin bo’lsa, u holda rekursiyani qo’llash tavsiya etilmaydi.


          • Masalan, faktorialni hisoblash uchun oddiygina for tsiklidan foydalanish mumkin (bunday tsikl yordamida olinadigan yechim iterativ (qadamma-qadam) deb ataladi):



            int Factorial (int n)
            {
            int i, fact=1;
            for (i=2; i<=n; i++)
            fact*=i;
            return fact;
            }
            Bu dastur rekursiv dasturga nisbatan tezroq ishlaydi. Ixtiyoriy rekursiv dasturlarni juda murakkab bo’lsa ham rekursiyasiz yozish mumkinligi isbotlangan.

            43. Shablon tushunchasi, funktsiya shabloni misol yordamida tushuntirib bering?
            • Shablon (angl. template) —umumlashgan algoritmlarni ba’zi parametrlarida o’zgarishlar kiritmasdan (masalan, ma’lumot turini, bufer o’lchami va h.k.) qabul qilish va kodlash uchun mo’ljallangan C++ tilining muhim vositasi hisoblanadi.


            • Shablonlarni tavsiflash template kalit so’zidan boshlanib, undan keyin burchakli qavs («<» >va «>») ichida uning parametrlar ro’yxati keltiriladi. Shundan keyin shablon muhitini e’lon qilish amalga oshiriladi (masalan, funktsiya yoki klass), umumiy ko’rinishi quyidagicha bo’ladi:




            • template < template-parameter-list > declaration


    Funksiyalar
            • Oddiy misol orqali shablonli funksiyani o’rganamiz. Faraz qilaylik ikkita int turiga tegishli o’zgaruvchilar o’rnini almashtiruvchi funksiya mavjud bo’lsin:


    #include


    void my_swap(int&first,int&second)
    {
    Int temp (first);
    first=second;
    second=temp;
    }
    Int main ()
    {
    int a=5;
    int b=10;
    std::cout<<my_swap(a,b);
    std::cout<<}



    Download 5,63 Mb.
    1   ...   18   19   20   21   22   23   24   25   ...   71




    Download 5,63 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Rekursiya chuqurligi nima, rekursiv va iteratsion algoritmlarning o’zaro farqi?

    Download 5,63 Mb.