|
Kompyuter tizimlari kafedrasi
|
bet | 86/154 | Sana | 08.01.2024 | Hajmi | 5,29 Mb. | | #131939 |
Bog'liq Majmuausing System;
namespace Rekursiya
{
class Program
{
static int[] array = { 7, 75, 28, 47, 31, 105, 17, 9, 27, 119, 57 };
public static void Main(string[] args)
{
sort(0, array.Length - 1);
foreach (int i in array)
Console.WriteLine(i);
Console.ReadLine();
Console.ReadKey(true);
}
static void sort(int l, int r)
{
int i = l;
int j = r;
int x = array[(l + r) / 2];
do
{
while (array[i] < x) i++;
while (array[j] > x) j--;
if (i <= j)
{
int y = array[i];
array[i] = array[j];
array[j] = y;
i++;
j--;
}
} while (i < j);
if (l < j)
sort(l, j);
if (l < r)
sort(i, r);
}
}
}
Ushbu dastur matnini o‘zingiz tahlil qilib ko‘ring. Koddagi rekursiv jarayon eng oxirida bo‘lib, sort() metodi o‘zini chaqiradi va massiv indekslarini uzatadi.
Metodlarni qayta yuklash
C# bir xil sinfning ikki yoki undan ortiq metodlariga, parametrlari boshqacha e’lon qilingan bo‘lsa, bir xil nomga ega bo‘lish imkonini beradi. Bunda qayta yuklanuvchi jarayonning o‘zi qayta yuklanuvchi metodlar deyiladi. Umuman olganda, metodni qayta yuklash uchun uning turli xil variantlarini e’lon qilish kifoya, qolganlari bilan kompilyator shug‘ullanadi. Ammo shu bilan birga, quyidagi muhim shartga rioya qilish kerak: har bir metod uchun parametrlarning turi yoki soni boshqacha bo‘lishi kerak. Ikki metodning faqat qaytarish turlari bo‘yicha farqlanishi yetarli emas. Ular, shuningdek, parametrlarining turlari yoki soni bo‘yicha farq qilishi kerak. (Bunday holatlarda, qaytarish turlari C# kompilyatoriga qaysi metoddan foydalanishni hal qilish uchun yetarli ma’lumot bermaydi.) Qayta yuklangan metodlar qaytarish turlarida ham farq qilishi mumkin. Qayta yuklangan metod chaqirilganda, o‘tkazilgan argumentlarga parametrlari mos keladigan (turi va soni bo‘yicha) metodning varianti bajariladi.
Quyida qayta yuklash metodini ko‘rsatish uchun oddiy misol keltirilgan.
|
| |