Buradasınız

C# Rekürsif Metotlar

c# dersleri

Ö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

Konuyla İlgili Yazılar

c# dersleri

12-C#-7 ++ ve -- Operatörleri

++ VE -- OPERATÖRLERİ Bu operaröler bir artırma ve azaltma işlemi yapar. Değişkenin sağında veya solunda kullanılmasına göre işlem değişir. a++; --> a=a+1;... devamı...