Bir sayının faktöriyelini (1'den n'e kadar olan sayıların çarpımı) iteratif ve recursive yöntemlerle hesaplar.
Faktöriyel, pozitif bir tam sayının kendisinden küçük tüm pozitif tam sayılarla çarpımıdır. DSA notlarında, recursive yapının anlatımında klasik bir başlangıç örneği olarak sunulur.
Recursive yöntem doğrudan matematiksel tanımı (`n * factorial(n - 1)`) takip eder. İteratif yöntem ise bir döngü kullanarak ara değerleri biriktirir ve fonksiyon çağrı yığını (call stack) maliyetini ortadan kaldırır. JavaScript'te BigInt kullanımı gerekir.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1function factorial(n: number): bigint {2 if (n < 0) throw new Error('Faktöriyel negatif sayılar için tanımlı değildir.');3 let result = 1n;4 for (let i = 2n; i <= BigInt(n); i += 1n) { result *= i; }5 return result;6}Faktöriyelini hesaplamak istediğiniz tam sayıyı girin (en fazla 150). Örnek: 10
Faktöriyelini hesaplamak istediğiniz tam sayıyı girin (en fazla 150). Örnek: 10
En İyi Durum: O(1)
Ortalama Durum: O(n)
En Kötü Durum: O(n)
O(1) (İteratif) / O(n) (Recursive çağrı yığını) - Bu algoritmanın karmaşıklığı belirtilmemiş.
Factorial (Faktöriyel) Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: