Fonksiyon içinde kendini çağırma?

Başlatan Seferi, 31 Aralık 2011, 15:21:12

Seferi

İyi günler herkese. CCS C de Bir kesme fonksiyonu RB0 kesmesi için oluşturmuş olduğum kesme fonksiyonun içinde yine aynı fonksiyonu(RB0 kesme fonksiyonunu) çağırabilir miyim? Bu olay ANSI C de var mı? Veya Diğer PIC C derleyicilerinde var mıdır? Yardımlarınız için şimdiden teşekkürler.

Kabil ATICI

Evet. Sadece kesme durumlarını karşılaştırman yeterli...
Kesme şartı olan STATUS bitini kontrol edersen yapabilirsin...
ambar7

RcALTIN

ccs de hiç ihtiyaç duymadım, ama ansi c de olduğu için orada da destekleniyordur. bu olayın adına recursion deniyor, ilgili fonksiyonda recursive method olarak adlandırılıyor, fakat fonksiyon içindeki sonlandırma kısmında hata yaparsanız sonsuz dallanmalara neden olabilir.
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

fatihinanc

Selam,

Çağırabilirsiniz. Bu tarz fonksiyonlara recursive yani kendi kendini çağıran fonksiyonlar deniliyor.
Fakat bu bir sonsuz döngü olacağından ve her fonskiyona dallanmada stack kullanımı artacağından ve sonsuz döngüden ve stackin dolmasından dolayı program kilitlenecektir.
Bu sebeple fonksiyonun ilk başında istenen şartın sağlanıp sağlanmadığını kontrol edip, eğer sağlandıysa return ile dögüden çıkmanız gerekiyor.

Mesela anlaması kolay olduğu için hep faktöriyel örneğini verirler ;)
int faktoriyel(int n) /*Foksiyon tanimlari*/ 
{
    int faktor;
    if (n <= 1)
        faktor = 1;
    else
        faktor = n * faktoriyel(n - 1);
    return faktor;
}
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Seferi

Yardımlarınız için çok teşekkür ederim. Herkese İyi günler.