Şimdi Ara

Yineleme fonksiyonu yardım.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir (1 Mobil) - 2 Masaüstü1 Mobil
5 sn
2
Cevap
0
Favori
501
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar ben C'ye yeni başladım. Aldım bi kitap başladım çalışmaya. Güzel gidiyodum ama şu yineleme fonksiyonuna (kendi
    kendini çağıran fonksiyon) gelince takılıp kaldım.Çalışma prensibini az buçuk anladım ama kendi kafamdan yinelemeli fonksiyon içeren kod yazamadım.Şimdi bildiğimiz yöntemlerle çözdüğümüz her problemi kendini çağıran fonksiyon yöntemiyle çözebilirmiyiz.
    Tabi bunun tam terside olabilir.Bir iki örnekle anlayabileceğim şekilde açıklayacak olan olursa harbiden çok iyi olur.
    Yoksa fazla uğraşmadan bu konuyu es geçsem mi? Çünkü bende iki tane c kitabı var birinde adı bile geçmiyor.



  • kendi kendini çağıran fonksiyon iç içe işlem yapacağın zaman kullanılır. hep verilen örnek faktoriyel hesabıdır.

     

    int faktor(int i)
    {
    if(i>1)
    return i*faktor(i-1);
    else
    return 1;
    }



    bu tür fonksiyonları kullanırken mutlaka geri dönüş için bir kontrol koymalısın yoksa fonksiyon devamlı kendini çağırarak sonsuz döngüye girer. if(i>1) koşulu bunu sağlıyor. mesela farklı olması açısından şöyle bir örnek düşünebiliriz.
    1+2/(1+2/(1+2/(1+2/(1)))) işleminin sonucunu hesaplayalım. bunu şimdi yazdım bakalım nasıl olacak çözümü..

     

    double hesap(double i)
    {
    if(i>0)
    return 1+2/(hesap(i-1));
    else
    return 1;
    }



    buradaki i değişkeni işleme girmiyor sadece fonksiyonun kaç kere kendi kendini çağıracağını kontrol ediyor. hesap(4) ile çağırıldığında yukarıdaki işlemin sonucunu dönecek fonksiyon. bu tür fonksiyonlar bir de dal-sınır algoritmalarında kullanılıyor. mesela satraçta. ama eğer işlemi farklı bir şekilde yapabiliyorsan kendi kendini çağıran fonksiyonları kullanmak pek mantıklı olmaz. çünkü bu fonksiyonlar her çağrılışında bellekte yer kaplar. ve bazı dillerde 10 kereden fazla çağırılamama gibi kısıtları olabiliyor. açıklayıcı olmuştur umarım, iyi çalışmalar..




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.