Özyineli (Rekürsif-Recursive) Metotlar
Bir metodun kendi kendini çağırmasına yinelenme (recursion), kendi kendini çağıran metotlara da yinelenen veya özyineli (recursive) metotlar denir.
Bir metodun kendi kendini çağırması, zaman zaman da olsa program yazarken ihtiyaç duyulan bir olaydır. Yinelenen metotlar tasarlanırken çok dikkatli olunmalıdır. Aksi takdirde sonsuz bir döngü içerisine girilebilir. Bu döngünün bir şekilde sonlandırılması gerekmektedir.
Örnek:Faktöriyel işlemini Rekürsif metotlarla yapalım. (5 Sayısı 5*4*3*2*1=?)
staticint fatoriyel(int sayi)
{
if (sayi == 1)
return 1;
else
return sayi * fatoriyel(sayi - 1);
}
staticvoid Main(string[] args)
{
Console.WriteLine("sayıyı gir");
int sayi = int.Parse(Console.ReadLine());
Console.WriteLine("Fotoriyel:{0}",fatoriyel(sayi));
Console.ReadKey();
}
Fibonacci sayı dizi
Fibonacci sayı dizisinin en önemli özelliklerinden biri her sayının bir önceki sayıdan yaklaşık 1.618 kat daha büyük olmasıdır. Sayı dizisinde yer alan bütün sayıların bu ortak özelliği bu yöntemde kullanılan ortak oranın temelini teşkil eder.
0 1 1 2 3 5 8 13 21 34 55 89 ….
Örnek: fibonacci işlemini Rekürsif metotlarla yapalım.
staticint fibonacci(int sayi)
{
if (sayi==0)
return 0;
elseif (sayi==1)
return 1;
else
return fibonacci(sayi-1)+fibonacci(sayi-2);
}
staticvoid Main(string[] args)
{
Console.WriteLine("değeri girin : ");
int n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
Console.WriteLine("\n"+fibonacci(i));
Console.ReadKey();
}
Örnek: Klavyeden girilecek olan bir sayıya kadar değerlerin toplamını yapan ardisiktoplam adında rekürsif metotla yapınız.
staticint ardisiktoplam(int a)
{
if (a == 1)
return 1;
return a + ardisiktoplam(a - 1);
}
staticvoid Main(string[] args)
{
Console.WriteLine("değeri girin : ");
int sayi = int.Parse(Console.ReadLine());
Console.WriteLine(ardisiktoplam(sayi));
Console.ReadKey();
}
Yorum ekle