Anasayfa / Yazılım / C# / Recursion (Yinelenen) Fonksiyonlar

Recursion (Yinelenen) Fonksiyonlar

Programlamada bazı metotlari, bazı fonksiyonlar içinde tekrar ve tekrar kendilerini çağırdıklarını görürüz. Bu tip metotlar recursive metotlar yani yinelemeli, tekrarlamalı metotlar olarak adlandırılırlar. Recursive metotlar kendilerini doğrudan ya da dolaylı olarak çağırabilirler.

Recursive fonksiyon yazılmış bir uygulama düşünelim. Yine recursive metot dediğimizde akla gelen Faktöriyel işlemini düşünelim. Örneğin 5! değeri, 5 * 4 * 3 * 2 * 1 = 120’dir. Yani faktöriyel işlemimde bir tam sayının 0’dan büyük değerler ile kendisinden her bir adımda 1 azaltılarak kendisi ile çarpımıdır. Örnek olarak kodsal olarak ifade edersek;

Şimdi 20! değerini hesaplayan csharp programını yazalım. Console uygulaması olacak, dolayısı yeni proje deyip bir console uygulaması açıyorum. Daha sonra kodlarımı aşağıdaki gibi yazıyorum.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication17
{
    class Program
    {
        static void Main(string[] args)
        {
            //20! hesabı yapacağım için döngümü kuruyorum. Döngünün her adımında, metodumu çağırıp
            //işlem yapıyorum
            for (long sayac = 0; sayac <= 20; sayac++)
            {
                Console.WriteLine("{0}! = {1}", sayac, FaktoriyelHesapla(sayac));
            }

            Console.ReadLine();
        }
        //Faktöriyel hesaplama metodum.
        public static long FaktoriyelHesapla(long sayi)
        {
            if (sayi <= 1)
            {
                return 1;
            }

            else
            {
                return sayi * FaktoriyelHesapla(sayi - 1);
            }
        }
    }
}

2013082502

2 yorum

  1. Aşağıdaki metot ne işe yarar. BU metodu recursive olarark tekrar yazın. (Not: Recursive yazacağınız yeni metot için metot imzasını (alacağı parameterleri) değiştirmeniz gerekebilir)

    static bool MetotX(int [] array, int anahtar)

    {

    int i = 0, n = array.GetLength(0);

    for (i = 0; i < n; i++)

    {

    if (array[i] == anahtar)

    {

    return true;

    }

    }

    return false;
    }

  2. Bu recursive metot değil birader.. Döngü içerisinde metot çağırmışsın sadece! recursive metot kendi kod gövdesi içerisinde kendini tekrar çağıran metotdur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir