Ma’lumotlar tuzilmasi va algoritmlar fanining maqsad va vazifasini izohlab bering



Yüklə 1,56 Mb.
səhifə20/32
tarix05.10.2023
ölçüsü1,56 Mb.
#152400
1   ...   16   17   18   19   20   21   22   23   ...   32
MTA oraliq javoblai

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



    Yüklə 1,56 Mb.

    Dostları ilə paylaş:
  • 1   ...   16   17   18   19   20   21   22   23   ...   32




    Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
    rəhbərliyinə müraciət

    gir | qeydiyyatdan keç
        Ana səhifə


    yükləyin