IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 22 Şubat 2012, 14:58   #1
Çevrimdışı
aSi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Aynı işleve sahip yinelemeli ve özyinelemeli iki fonksiyon arasındaki performans fark





Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Yinelemeli yani diğer adıyla iteratif fonksiyonlar aynı işlemi defalarca tekrarlayarak sonuca ulaşmak için kullanılır. Özyinelemeli fonksiyonda ise aynı işlemi yapmak yerine yazdığımız fonksiyonu tekrardan çağırarak kendi içinde bir döngü oluşturup sonuca ulaşmamızı sağlar. İki fonksiyonun da kullanım alanları benzerdir (faktöriyel hesabı gibi) ve tek farkları aralarındaki çalışma süresi farkıdır. Biz de bu kodda bu aradaki süreyi ölçeceğiz. Özyinelemeli fonksiyonlar hakkında daha fazla bilgiye[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] tıklayarak ulaşabilirsiniz.


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
#include <iostream>//gerekli kütüphanemiz #include <time.h>//time.h kütüphanemizi gerçek zamanlı ölçüm yapmada kullanacağız. //Bu kütüphane hakkında daha fazla bilgi almak için burayı tıklayın. using namespace std;//her satırda std:: kullanmamak için namespace kullandık. double faktöriyel_özyinelemeli(int x)//ilk olarak özyinelemeli fonksiyonumuzu yazdık. { if (x<=1) return 1;//return 1 dememizin sebebi 1 ve 0 ın faktöriyelinin yine 1 olmasıdır. else return (x*faktöriyel_özyinelemeli(x-1));// girilen sayının 1den büyük olması durumunda //sayının kendisini az önce yazdığımız fonksiyonu çağırdığımızda çıkan sonuçla yani 1 eksiğiyle //çarparak faktöriyel işlemini gerçekleştirdik. } double faktöriyel_yinelemeli(int x)//yinelemeli fonksiyonumuz { int sonuc=1;//öncelikle bir değişken yaratıp 1e eşitledik. if (x<=1) return 1; else { while (x!=1)//döngüde ise ilk sonuçla girdiğimiz sayıyı sürekli çarparak { sonuc = sonuc*x;//işlemi devam ettirdik. x=x-1;//ta ki x 1 olana kadar. } return sonuc;//en son işe sonucu döndürdük. } } void main(void) { int x; cout<<"Lütfen 0 veya 0'dan büyük bir sayı giriniz\n"; cin>>x;//x sayımızı kullanıcıdan aldık clock_t baslangıc,bitis;//clock_t türünden 2 tane nesne yarattık double sonuc1,sonuc2;//2 tane de double türünde değişken atadık. baslangıc=clock();//fonksiyon çalışmaya basladığında saati aldık cout<<faktöriyel_özyinelemeli(x)<<endl;//fonksiyonumuzu bastırarak calışmasını sağladık bitis=clock();//fonksiyonun sonlanış saatini aldık. sonuc1=(double)bitis-baslangıc/CLOCKS_PER_SEC;//birinci sonucumuzu bitiş saatinden başlangıç //saatini çıkardıktan sonra /CLOCKS_PER_SEC yaparsak kaç saniyede işlemin tamamlandıgını buluruz. //aynı zamanda burda değişken tipi değişimini de (double) koduyla sağladık. cout<<sonuc1<<endl;//sonucumuzu bastırdık baslangıc=clock(); cout<<faktöriyel_yinelemeli(x)<<endl;//aynı işlemleri yinelemeli fonksiyon için de yaptık. bitis=clock(); sonuc2=(double)bitis-baslangıc/CLOCKS_PER_SEC; cout<<sonuc2<<endl; }


__________________
Doğruları biliyorsan, yalanları dinlemek eğlencelidir.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Cevapla

Etiketler
arasındaki, aynı, fark, fonksiyon, iki, işleve, performans, sahip, ve, yinelemeli, özyinelemeli


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Bir Türk ve Rus kızı arasındaki 10 fark Luis Komedi ve Mizah 19 26 Mart 2010 15:57
Kadın ve erkek arasındaki 50 fark Lucifer Merak Ettikleriniz 0 11 Mart 2010 19:32
2 Eşşek Arasındaki 7 Fark ! Julw Komedi ve Mizah 2 31 Ekim 2007 23:08