Arkadaşlar aşağıya yazdığım kodda merak ettiğim birşey var bakar mısınız?
def faktoriyel(n):
if n == 1:
return n
else:
return n*faktoriyel(n-1)
print(faktoriyel(6))
Şimdi bu kodda “print(faktoriyel(6))” bu satırda faktöriyel almasını istediğimiz sayıyı giriyoruz ve bir eksiltip çarpıyor ama sıfır ile çarpmıyor bunun sebebi nedir?
def faktoriyel(n):
if n == 1:
return n
else:
return n*faktoriyel(n-1)
Sebebi;
if n == 1:
return n
koşulu.
n değeri 1’e eşit olduğunda, else koşulundaki “faktoriyel(n-1)” kısmı yerine “return n” değeri yani 1 yazılır.
Fonksiyonu aşağıdaki şekilde yazıp çıktısını incelersen daha kolay anlayablirsin.
def faktoriyel(n):
if n == 1:
print("n = 1 olduğunda çalışan 'if' koşulu ve n sayısının değeri:", n)
return n
else:
print("n, 1'den büyük olduğunda çalışan 'else' koşulu ve n sayısının değeri:", n)
return n*faktoriyel(n-1)
print(faktoriyel(6))
Çıktı:
n, 1`den büyük olduğunda çalışan `else` koşulu ve n sayısının değeri: 6
n, 1`den büyük olduğunda çalışan `else` koşulu ve n sayısının değeri: 5
n, 1`den büyük olduğunda çalışan `else` koşulu ve n sayısının değeri: 4
n, 1`den büyük olduğunda çalışan `else` koşulu ve n sayısının değeri: 3
n, 1`den büyük olduğunda çalışan `else` koşulu ve n sayısının değeri: 2
n = 1 olduğunda çalışan `if` koşulu ve n sayısının değeri: 1
720
Hayır ama bilgisayar sence faktöriyelin ne olduğunu biliyor mu? Hayır bilmiyor bunu sen kodluyorsun benim merak etttiğim şeyde n*faktoriyel(n-1) dedik ya n 1’e kadar düştükten sonra neden sıfıra düşmüyordu bunu merak ediyordum arkadaş cevaplamış
Çok teşekkürler bende acaba if komutundan dolayı mı oluyor diye ekleyecektim fakat soru çok karmaşık olur diye eklemedim çok teşekkürler bilgilendirdiğin için