İç içe fonksiyon

Screenshot_3

arkadaşlar python da yeniyim de şu kodda herhangi bir döngü kullanmadan nasıl nasıl girdiğimiz sayı azalarak çarpılıyor. biri mantığını yazarsa sevinirim. şimdiden kolay gelsin

1 Beğeni

Merhaba,

return inner(number) #bu kısım yaratılmış olan inner fonksiyonunu tekrar çağırıyor bu şekilde her seferinde 1 azaltarak faktoriyel yapılabiliyor.

bkz: Soru Sorarken Sıkça Düşülen Hatalar #4

Ic fonksiyonun number parametresinin (2., 3., 5. satirlar) ismini degistirmek ve/veya fonksiyonu disari almak kodun anlasilmasini kolaylastirabilir.

Ben de bu konuda takılmıştım. Umarım anlatabileceğim.

return number* inner(number -1) # inner(number-1) fonksiyonu verilen sayının bir eksiği ile tekrar çalışır , 1 sayısına kadar eksilince zaten 1 döndürülüyor if bloğu nedeniyle ve çarpım bitiyor.

return number * ( ( number -1) * inner( (number-1) -1) # verilen sayıya göre işlem 1’e eksilene kadar devam eder

yani 5’in faktöriyeli için

return 5 * ( 4* (3* (2*(1) ) # şeklinde döngüye gerek kalmadan inner(number-1 ) fonksiyonu iç içe çalışır.