string s;
s = RString("abcd", 0); // s = "dcba"
s = RString("A", 0); // s = "A"
s = RString("", 0); // s = ""
s = RString("www.bestprog.net", 0); // s = "ten.gorptseb.www"
Sartning simmetrikligini aniqlashning rekursiv funksiyasi misoli
i-elementdan j-m elementiga qadar ssatrining simmetrik qismi mavjudligini aniqlaydigan recursiv funksiyani ishlab chiqish.
// Recursiv funksiya satr simmetrik yoki simmetrik emasligini aniqlaydi
// pos parametr i bilan (j-i) / 2 joyini almashtiradi
static bool IsSymmetric(string s, int i, int j, int pos)
{
if ( (i + pos) <= ((j - i) / 2))
{
if (s[i + pos] != s[j - pos]) // satr belgilarini solishtirish
return false;
else
return IsSymmetric(s, i, j, pos + 1); // keyingi ikkita belgini ko'rib chiqish
}
else
return true; // butun satr o'tdi
}
Yuqoridagi funksiya i+pos va j-pos o`rnida turgan belgilar if operator yordamida solishtiriladi
if (s[i + pos] != s[j - pos])
...
pos parametri i qiymatiga qo'shilgan joyi almashtiriladi: i+pos. i va j pozitsiyalari orasida ba'zi diapazonlar mavjud. pos parametrini i dan j diapazonga o'tkazish shart emas. Faqat yarim oraliqni ko'rish kifoya, shuning uchun funksiya tekshirishni o'z ichiga oladi:
if ( (i + pos) <= ((j - i) / 2))
{
Do'stlaringiz bilan baham: |