Test gift and xml


Download 1.72 Mb.
bet21/34
Sana30.04.2023
Hajmi1.72 Mb.
#1413071
1   ...   17   18   19   20   21   22   23   24   ...   34
Bog'liq
Algaritm umumiy

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 1.72 Mb.

    Do'stlaringiz bilan baham:
  • 1   ...   17   18   19   20   21   22   23   24   ...   34




    Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
    ma'muriyatiga murojaat qiling