Python: Girilen Sayının Faktöriyelini Hesaplama

Python Faktöriyel Hesaplama

Bu örneğimizde kullanıcı tarafından girilen sayının faktöriyelini hesaplayıp ekrana nasıl yazdıracağımızı öğreneceğiz. Bir kaç farklı yöntemle bu işlemi yapabiliriz.

For Döngüsü İle Faktöriyel Hesaplama

sayi = int(input("Faktöriyelini hesaplamak istediğiniz sayıyı girin: "))

faktoriyel = 1
if sayi < 0:
    print("Negatif sayıların faktöriyeli hesaplanamaz.")
elif sayi == 0:
    print("0! = 1")
else:
    for i in range(1, sayi + 1):
        faktoriyel *= i
    print(f"{sayi}! = {faktoriyel}")

While Döngüsü İle Faktöriyel Hesaplama

sayi = int(input("Faktöriyelini hesaplamak istediğiniz sayıyı girin: "))

faktoriyel = 1
if sayi < 0:
    print("Negatif sayıların faktöriyeli hesaplanamaz.")
elif sayi == 0:
    print("0! = 1")
else:
    while sayi > 0:
        faktoriyel *= sayi
        sayi -= 1
    print(f"Faktöriyel = {faktoriyel}")

Özyinelemeli (Recursive) Fonksiyon İle Faktöriyel Hesaplama

def faktoriyel_hesapla(n):
    if n < 0:
        return "Negatif sayıların faktöriyeli hesaplanamaz."
    elif n == 0 or n == 1:
        return 1
    else:
        return n * faktoriyel_hesapla(n - 1)

sayi = int(input("Faktöriyelini hesaplamak istediğiniz sayıyı girin: "))
sonuc = faktoriyel_hesapla(sayi)
print(f"{sayi}! = {sonuc}")

math Kütüphanesi İle Faktöriyel Hesaplama

import math

sayi = int(input("Faktöriyelini hesaplamak istediğiniz sayıyı girin: "))

if sayi < 0:
    print("Negatif sayıların faktöriyeli hesaplanamaz.")
else:
    sonuc = math.factorial(sayi)
    print(f"{sayi}! = {sonuc}")

Reduce Fonksiyonu İle Faktöriyel Hesaplama

Python’un functools modülündeki reduce fonksiyonu kullanılarak faktöriyel hesaplanabilir.

from functools import reduce

sayi = int(input("Faktöriyelini hesaplamak istediğiniz sayıyı girin: "))

if sayi < 0:
    print("Negatif sayıların faktöriyeli hesaplanamaz.")
elif sayi == 0:
    print("0! = 1")
else:
    faktoriyel = reduce(lambda x, y: x * y, range(1, sayi + 1))
    print(f"{sayi}! = {faktoriyel}")

Hangi Yöntem Ne Zaman Kullanılır?

  • For/While Döngüsü: Temel ve anlaşılır yöntemlerdir. Performans açısından da uygundur.
  • Recursive Fonksiyon: Özyineleme kavramını öğrenmek için faydalıdır, ancak büyük sayılar için performans sorunları olabilir.
  • Math Kütüphanesi: Hızlı ve kolay bir çözüm sunar. Büyük sayılar için idealdir.
  • Reduce Fonksiyonu: Fonksiyonel programlama yaklaşımını kullanmak isteyenler için uygundur.