k butun soni, bu rekursiyada s[pos]belgisining takrorlanish sonini aniqlaydi; cchartipidagi 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 belgiemas { 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();