RECURSİVE OLARAK FAKTORİYEL HESABI YAPMA

#include<stdio.h>
#include<conio.h>
int fac(int);
void main()
{
int num;
printf(“sayiyi giriniz:”);
scanf(“%d”,&num);
printf(“%d”,fac(num));
getch();
}
int fac(int N)
{
if(N<=1)
return 1;
return N*fac(N-1);
}

 

Oracle Exadata SQL Server Goldengate Weblogic EBS ve Linux konusunda aşağıdaki konularda 7×24 Uzman Danışmanlara yada Eğitimlere mi
İhtiyacınız var [email protected] adresine mail atarak Bizimle iletişime geçebilirsiniz.

– Oracle Veritabanı Danışmanlığı
– Oracle Veritabanı Bakım ve Destek
– Exadata Danışmanlığı
– Exadata Bakım ve Destek
– SQL Server Veritabanı Danışmanlığı
– SQL Server Veritabanı Bakım ve Destek
– Goldengate Danışmanlığı
– Goldengate Bakım ve Destek
– Linux Danışmanlığı
– Linux Bakım ve Destek
– Oracle EBS Danışmanlığı
– Oracle EBS Bakım ve Destek
– Weblogic Danışmanlığı
– Weblogic Bakım ve Destek
– Oracle Veritabanı Eğitimleri
– Oracle VM Server Danışmanlığı
– Oracle VM Server Bakım ve Destek
– Oracle EPPM Danışmanlığı
– Oracle EPPM Bakım ve Destek
– Oracle Primavera Danışmanlığı
– Oracle Primavera Bakım ve Destek
– Oracle Eğitimleri
– SQL Server Eğitimleri
– Goldengate Eğitimleri
– Exadata Eğitimleri
– Linux Eğitimleri
– Oracle EBS Eğitimleri
– Oracle VM Server Eğitimleri
– Weblogic Eğitimleri
– Oracle EPPM Eğitimleri
– Oracle Primavera Eğitimleri

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

One comment

  1. Faktöriyel hesapları için recursive yaklaşım basit, rahat fakat iteratif yaklaşıma göre yavaş ve sisteme yük getirecek bir kullanım olur. N! hesabı için recursive teknik N adet fonksiyon çağırımı yapacak ve değişkenler N defa stack a itilecektir. Faktöriyel fonksiyonunda 2 değişken olduğunu düşünürsek ( biri fonksiyon parametresi diğeri de geri dönüm değeri ) stack 2*N*SizeOf(kullanılan değişken tipi) -byte kadar şişecektir… İşlem yükü ise sadece fonksiyon içerisindeki çarpma işlemidir. Toparlarsak; sisteme binen işlem yükü: N adet fonksiyon çağırımı, N-1 adet çarpma işlemi; bellek kullanımı: 2*N*SizeOf(kullanılan değişken tipi) -byte.

    İteratif yaklaşım ile çözüme gidilirse, yapılması gereken basit bir for döngüsü kurmaktır.

    result=1;
    for k=1 to N do result=result*k;

    Bu yaklaşımla 1 adet fonksiyon çağırımı yaparak sonuç hesaplatabilirsiniz. Kullandığınız bellek miktarı ise ciddi şekilde azalmış oalcaktır: 3 adet değişken! 1. döngü kontrolü (k), 2. fonksiyon parametresi, döngü sınırı (N), 3. ise sonucun saklandığı result değeri (geri dönüm, farklı dillerde farklı yapılar mevcuttur ;)). ) -byte kadar şişecektir… İşlem yükü ise sadece fonksiyon içerisindeki çarpma işlemidir. Toparlarsak; sisteme binen işlem yükü: 1 adet fonksiyon çağırımı, N adet çarpma işlemi, 1 adet atama ve 1 adet de Inc işlemi (for döngüsü içinde k nın birer artması olayı. Derleyici seviyesinde bu işlem CPU saat darbesi ile gerçekleştirilir ve a=a+1 atamasından kat be kat daha hızlıdır ;)); bellek kullanımı: 3*SizeOf(kullanılan değişken tipi) -byte.

    Genel karşılaştırmayı yaparsak, faktöriyel hesabını iteratif olarak yaptırmak daha kârlıdır…

Leave a Reply

Your email address will not be published. Required fields are marked *