Åžub232008

C Dilinde Main Recursion

Yazar: Gökhan ÖZİÇ Yayınlanma Saati: 16:28
Kategori(ler): C / C++

       Son lab dersimizde bizden main fonksiyonu recursive yapmamız isteniyordu. Kendi yazdığımız main fonksiyonun içinde bir static integer "count" tanımlayıp, bunu da "1"e initialize edecektik. Daha sonra bu değişkeni ekrana bastırıp sonra da postincrement edecektik. Algoritma;

#include <stdio.h>
int main()
{
      static int count=1;
      printf("%d ", count);
      count++;
      main();
      return 0;
}

şeklinde oldu. Kodu execute ettiğimde program 1'den başlayarak count'u ekrana basmaya başladı.Ta ki count 12316 değerini alıncaya kadar. 12316 değerine ulaştığında program sonlandı. "Neden 12316?" diye düşünüyordum. Değişkeni integer olarak tanımladığımdan olamazdı çünkü integer'ın son değeri 32767'dir. Aklıma "Acaba RAM'in kapasitesinden dolayı olabilir mi?" sorusu geldi ve bunu anlamak için yazdığım algoritmanın içine 5 tane daha integer değişken tanımladım. Algoritma;

#include <stdio.h>
int main()
{
      static int count=1;
      int a=0, b=0, c=0, d=0, e=0;
      printf("%d ", count);
      count++;
      main();
      return 0;
}

şeklinde oldu. Kodu execute ettiğimde gördüm ki bu sefer de 9948'e kadar basıp program sonlandı. Haklıydım. Yeni tanımladığım değişkenler RAM'de daha da fazla yer işgal ettiği için bu sefer count 9948'e kadar ekrana basılabilmişti. Kısacası main recursive yaptığınızda belli bir değere kadar RAM'in kapasitesine göre değişkeninizin değeri artırılabiliyor. RAM, değişkenin yeni değerini tutamadığı için ise program sonlanıyor. Buna bir de "stack overflow"'u eklediğinizde algoritmanızın sonlanması kaçınılmaz oluyor.



Etiket(ler): , ,



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

E-mail | Permalink | Trackback | Yazı RSSRSS comment feed 0 Yorumlar

Yorum ekle


 

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading