C/C++ Faktöriyel Hesaplama
C ve C++ programlama dili ile faktöriyel hesaplama için kullanılan tekrarlamalı (iterative) ve özyinelemeli (recursive) yöntemlerle ilgili bilgiler yer alıyor.
Faktöriyel hesaplama
Faktöriyel hesaplama işlemi belirli bir sayıdan 1 sayısına kadar olan sayıların çarpımıdır.
Örneğin; 5 sayısı için 5*4*3*2*1 = 120
C ve C++ programlama dilinde faktöriyel hesaplamak için tekrarlamalı ve özyinelemeli yöntemler kullanılır.
Tekrarlamalı yöntem
Tekrarlamalı yöntem veya iteratif yöntem programlama dili içerisinde yer alan döngüler kullanılarak yapılan işlemdir.
#include <iostream>
using namespace std;
int main(){
int faktoriyel = 1, sayi = 0;
cout << "Sayi giriniz: ";
cin >> sayi;
for (int i = 2; i <= sayi; i++){
faktoriyel *= i;
}
cout << faktoriyel;
return 0;
}
C ile;
#include <stdio.h>
int main(){
int i = 0, faktoriyel = 1, sayi = 0;
fprintf(stdout, "Sayi giriniz: ");
fscanf(stdin, "%d", &sayi);
for(i = 2; i <= sayi; i++){
faktoriyel *= i;
}
fprintf(stdout, "%d", faktoriyel);
return 0;
}
Tekrarlamalı yöntemin while döngüsü ile yapılmış hali aşağıdaki gibidir.
#include <iostream>
using namespace std;
int main(){
int faktoriyel = 1, sayi = 0;
cout << "Sayi giriniz: ";
cin >> sayi;
while (sayi >= 2){
faktoriyel *= sayi;
sayi--;
}
cout << faktoriyel;
return 0;
}
Özyinelemeli yöntem
Özyinelemeli yöntem veya rekürsif yöntem yazılan fonksiyonunun sürekli kendini çağırmasıdır.
#include <iostream>
using namespace std;
int faktoriyel(int sayi){
if(sayi <= 1) return 1;
return sayi * faktoriyel(sayi - 1);
}
int main(){
int sayi = 0;
cout << "Sayi giriniz: ";
cin >> sayi;
cout << faktoriyel(sayi);
return 0;
}
C ile;
#include <stdio.h>
int faktoriyel(int sayi){
if(sayi <= 1) return 1;
return sayi * faktoriyel(sayi - 1);
}
int main(){
int sayi = 0;
fprintf(stdout, "Sayi giriniz: ");
fscanf(stdin, "%d", &sayi);
fprintf(stdout, "%d", faktoriyel(sayi));
return 0;
}
NOT: Faktöriyel hesaplama işleminde büyük sayılar işletim sistemi mimarisine göre farklı sonuçlar verebilir.
Programlama örneklerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.