1-Mavzu 1-Mavzu Reja: Klass a’zolariga ruxsatni boshqarish


Recursiv funksiya  quyidagi parametrlarni o'z ichiga oladi


Download 116.94 Kb.
bet45/100
Sana02.01.2022
Hajmi116.94 Kb.
#200801
1   ...   41   42   43   44   45   46   47   48   ...   100
Bog'liq
dasturiy injinering

Recursiv funksiya  quyidagi parametrlarni o'z ichiga oladi:

qayta ishlanayotgan s satri string tipida;

rekursiyadagi joriy holat uchun belgining satrdagi o`rnini aniqlovchi o`zgaruvchi. s[pos] chartipidagi belgi;

k butun soni, bu rekursiyada s[pos] belgisining takrorlanish sonini aniqlaydi;

c char tipidagi o'zgaruvchi, rekursiv funksiyada oldingi belgini ifodalaydi. Bu ketma-ket topilgan belgilarni maxsus qayta ishlash uchun kerak.

// ratrni qayta ishlash uchun rekursiv funksiya

static string ConvertStr(string s, int pos, char c, int k, string s2)

{

  if (pos < s.Length) // s[pos] hozircha s[pos] oxirgi belgi emas

  {

    if (pos == 0) // satrning birinchi belgisi

      // keyingi belgini qayta ishlashga o'tish

      return ConvertStr(s, pos + 1, s[pos], 1, s2);

    else // не первый символ строки

    {

      if (s[pos] == c) // agar keyingi va oldingi belgilar bir xil bo'lsa, biz harakat davom ettiramiz

        return ConvertStr(s, pos + 1, s[pos], k + 1, s2);

      else // agar belgilar har xil bo'lsa, unda s2 satrida vaqtinchalik natijani belgilash

      {

        // agar k = = 1 bo'lsa, s2 ga c belgisi shunchaki qo`shish,

        // aks holda, c belgisidan oldin k raqamini qo'yish

        if (k == 1)

          s2 = s2 + c.ToString();

        else

          s2 = s2 + k.ToString() + c.ToString(); // s2 = s2 + "AAA' = s2 + "3A"

        // rekursiyaning keyingi qadamiga o'tish, satrni qayta ishlashni davom ettirish

        return ConvertStr(s, pos + 1, s[pos], 1, s2);

      }

    }

  }

  else // butun satr o`tish

  {

    // satrni qayta ishlashni tugatish

    if (k == 1)

      s2 = s2 + c.ToString();

    else

      s2 = s2 + k.ToString() + c.ToString();

    return s2; // rekursiv jarayonning oxiri

  }




Download 116.94 Kb.

Do'stlaringiz bilan baham:
1   ...   41   42   43   44   45   46   47   48   ...   100




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