Şu eğitimden: Temel Python Eğitimi
Çözüm: Faktöriyel - Python Eğitimi
Şu eğitimden: Temel Python Eğitimi
Çözüm: Faktöriyel
- [Eğitmen] Umarım bu faktöriyel fonksiyonları çözerken eğlenmişsinizdir. Tekrar hoş geldiniz. Nasıl yaptın? Size çözümümü göstereceğim ve ipuçları dosyasına baktıysanız, bu çözüm muhtemelen çok fazla sürpriz olmamalı. Yapmak istediğimiz ilk şey, girdimizin faktöriyelini alabildiğimizden emin olmaktır, bu nedenle girdimiz bir tamsayı değilse, hiçbirini döndürmeyeceğiz. Yani bu, 1.2 gibi şamandıraların yanı sıra bir test durumu olduğunu fark etmiş olabileceğiniz "spam, spam, spam, spam, spam" dizesiyle ilgilenir. Tabii ki, negatif iki hala geçerli bir tamsayıdır, bu yüzden bunun için de özel bir durum oluşturmamız gerekiyor, bu yüzden giriş sayısının sıfırdan küçük olup olmadığını kontrol ediyoruz ve sonra hiçbirini döndürüyoruz, çünkü negatif bir tamsayının faktöriline sahip olamazsınız. Şimdi faktöriyel hesaplama ile işe başlamak istiyoruz. Bunu yapmak için, faktöriyel için kısa olan iki değişken yapacağım. Bu, nihayetinde geri döndüğümüz ve daha sonra kaç döngü yapmamız gerektiğini takip etmek için karşı koyduğumuz şeydir. Dolayısıyla, sayaç giriş sayısından küçük olsa da, bu temelde yineleme sayısıdır, faktöriyelimiz faktöriyele, mevcut faktöriyelin sayacın çarpımına eşittir ve ardından döngüdeki her geçişte sayacımıza bir tane artırır veya ekleriz. Yani ilk geçişte, bir ile çarpacaksınız, bir kere bir. İkinci geçişte, iki ile çarpacaksınız, üçüncü geçişte üç ile çarpacaksınız, vb., geçilen sayıya kadar. Yani beşi geçerseniz, bir kere iki kere üç kere dört kere beş geri döneceksiniz, ki bu tam olarak istediğimiz şey. Ve unutmayın, giriş sayısının sıfıra eşit olduğu özel bir durumumuz var, bu nedenle matematikçiler sıfırın faktöriyelinin bir olduğuna karar verdiler. Buna ben karar vermedim, bu matematikçilerdi, ama biz bilgisayar programcıları olarak matematikçilerin kurallarına uymak zorundayız, peki giriş numarası sıfır olduğunda bu işe yarıyor mu? Eğer num sıfırsa, o zaman gerçek sayıyı birden başlatırız. while döngüsü asla girilmez çünkü sıfır numaralı giriş zaten sayaçtan daha büyüktür ve bu nedenle sonunda bir tane döndürürüz, ki bu doğru, çok harika. Şimdi, bu işlevi yazmanın daha kısa bir yolu da var ve bu, bir işlevin kendisini çağırdığı özyineleme yoluyla. Bu yüzden size gerçekten hızlı bir şekilde çözümü göstermek istiyorum. Aslında aynı çekleri burada tutacağım ve ek bir durum ekleyeceğim. Sayı sıfıra eşitse, bir döndürün. Tamam, sonunda, num çarpı faktöriyel num eksi bir döndürmek istiyoruz ve bunu test edersek, bu da işe yarıyor. Harika. Peki ne oluyor? Diyelim ki bu fonksiyona üç rakamı ile faktöriyel diyoruz ve ben sadece buraya bir yorum yazacağım. Faktöriyel üç, onu nasıl adlandıracağımızdır ve bunun neye eşit olduğu, bu Python kodu değil, bu sadece bir tür kısaltmadır. Bunun yapacağı şey, tamam, harika, tüm bu kontroller üç numara için geçiyor diyecek. Sıfıra eşit değil, bu yüzden buraya iniyoruz ve üç çarpı faktöriyel üç eksi bir döndürüyoruz, bu da iki, bu yüzden üç çarpı faktöriyel iki döndürüyoruz. Peki, faktöriyel iki nedir? Böylece sayı iki olacak şekilde tekrar çağrılır, tüm bunları geçer ve faktöriyel ikinin iki çarpı faktöriyel bire eşit olduğu ortaya çıkar. Pekala, faktöriyel olan nedir? Bunu tekrar çağırıyoruz. Buraya deniyor. Faktöriyel bir, bir çarpı faktöriyel sıfıra, bir çarpı faktöriyel sıfıra eşittir. Peki, faktöriyel sıfır nedir? Tekrar aranır. Sayı sıfırsa, bir döndürürüz, yani faktöriyel sıfır birdir ve faktöriyel üçün üç çarpı iki çarpı bir çarpı bir olduğu ortaya çıkar, bu da altıdır, bu nedenle orijinal fonksiyon çağrımız, faktöriyel üç, altıya eşittir ve sonuçta altı döndürür. Şimdi, özyineleme ilk başta sihir gibi görünebilir, ancak korkmayın. Bu sadece süslü bir döngü türü. Alışmak biraz zaman alır, ancak aynı zamanda programlama repertuarınızda olması gereken çok kullanışlı bir beceridir.
Deneme dosyaları ile uygulama yaparken öğrenin
Eğitmenin dersi öğretmek için kullandığı dosyaları indirin. İzleyerek, dinleyerek ve uygulama yaparak öğrenin.