C# Permütasyon Hesaplama

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde permütasyon hesaplamayı anlatacağım. Hadi başlayalım !
Permütasyon tıpkı kombinasyon gibi matematikte sıkça kullanılan bir konu. Özellikle yuvarlak masa ve yerleşim gibi sıranın önemli olduğu sorularda oldukça önemli bir konu. Örneğin n’nin r’li permütasyonuformülü ile hesaplanıyor ve işte bizde şimdi kullanıcıdan n ve r değerlerini alarak C# ile permütasyon hesaplama yapacağız. İlk olarak kullanıcıdan n ve r değerlerini alalım;
Console.Write("n Değerini Girin: ");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("r Değerini Girin: ");
int r = Convert.ToInt32(Console.ReadLine());
Permütasyon hesaplamanın formülüne baktığımızda 2 tane faktöriyel hesaplama var fakat C#’ta faktöriyel hesaplaması yapan hazır bir fonksiyon yok. Bu yüzden faktöriyel hesaplamayı biz elle yapacağız. Faktöriyel, 1’den x’e kadar olan sayıların çarpımı demektir, yani x! = 1234…*x şeklindedir. Daha önce şu yazımda faktöriyel hesaplamayı anlattım, fakat şimdi de biraz üstünden geçmek istiyorum. Biz örneğin kullanıcıdan aldığımız n’nin faktöriyelini (n!) hesaplamak için 1’den n’ye kadar olan sayıları çarpmamız gerekiyor. Burada bir düzen halinde tekrar eden bir şey olduğu için for döngüsü kullanmamız mantıklı olacaktır. Döngünün dışında bir tane değişken oluşturup, döngünün her adımında çarpımı bu değişkene atayacağız ve döngü sonunda bu değişkenin istediğimiz sayının faktöriyeli olacaktır. Yani n! için kodumuz şöyle olmalı;
int nFaktoriyel = 1;
for(int i = 1; i <= n; i++)
nFaktoriyel *= i;
Evet n! hesapladık, aynı şeyi (n-r)! içinde yapmamız gerekecek. Aslında aynı işlemi yapacağız, tek fark döngümüzün üst sınırı n yerine n-r olacak. Şöyle ki;
int nEksibirFaktoriyel = 1;
for(int i = 1; i <= n - r; i++)
nEksibirFaktoriyel *= i;
Eveeett tüm hazırlıkları yaptık, artık bölme işlemini yapıp permütasyonu hesaplayalım ve sonucu kullanıcıya bildirelim.
double permutasyon = nFaktoriyel / nEksibirFaktoriyel;
Console.WriteLine("Permütasyon Sonucu: " + permutasyon);
Evet bu dersimizde bu kadardı, yazdığımız tüm kodları toplu olması için aşağıya bırakıyorum;
Console.Write("n Değerini Girin: ");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("r Değerini Girin: ");
int r = Convert.ToInt32(Console.ReadLine());
int nFaktoriyel = 1;
for(int i = 1; i <= n; i++)
nFaktoriyel *= i;
int nEksibirFaktoriyel = 1;
for(int i = 1; i <= n - r; i++)
nEksibirFaktoriyel *= i;
double permutasyon = nFaktoriyel / nEksibirFaktoriyel;
Console.WriteLine("Permütasyon Sonucu: " + permutasyon);
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.