Özyinelemeli Fonksiyonlar Bölüm 2
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 58 / 78.
Her özyinelemeli fonksiyon aynı iki parçaya sahiptir:
- Temel durum, ne zaman durulacağını belirtir.
- Özyinelemeli adım, fonksiyonu daha küçük bir girdiyle çağırır.
n'nin faktöriyeli n * (n - 1) * ... * 1 şeklindedir; dolayısıyla n'nin faktöriyeli, n ile n - 1'in faktöriyelinin çarpımına eşittir:
func factorial(n: int) -> int:
if n == 1: # temel durum
return 1
return n * factorial(n - 1) # özyinelemeli adımfactorial(5), factorial(4)'ü çağırır; o da factorial(3)'ü çağırır ve bu şekilde factorial(1)'e kadar devam eder; factorial(1) ise 1 döndürür. Geriye doğru ilerlerken her çağrı çarpma işlemi yapar: sonuç 120'dir.
Daha küçük bir girdi, daha küçük bir sayı olmak zorunda değildir. Daha kısa bir metin de işe yarar. Bu işlev bir metni tersine çevirir:
func reverse_text(text: String) -> String:
if text.length() <= 1: # temel durum
return text
return reverse_text(text.substr(1)) + text[0]text.substr(1), ilk karakteri olmayan dizgedir. Fonksiyon bu daha kısa dizgeyi tersine çevirir ve ilk karakteri sona ekler. Sıfır veya bir karakterden oluşan bir dizge zaten ters çevrilmiştir; bu nedenle temel durumdur.
print(reverse_text("hello"))ollehGörev
KolayÖzyinelemeli adlı fibonacci işlevini yazın. Bu işlev, pozitif bir tam sayı olan n değerini alır ve n. Fibonacci sayısını döndürür:
fibonacci(1)değeri0olurfibonacci(2)değeri1olurn > 2içinfibonacci(n)değerifibonacci(n - 1) + fibonacci(n - 2)olur
Örneğin, fibonacci(6) değeri 5 döndürür (dizi 0, 1, 1, 2, 3, 5 şeklinde başlar).
Testler fibonacci() işlevini kendileri çağırır. Siz çağırmayın ve hiçbir şey yazdırmayın.
Kendin dene
func fibonacci(n: int):
# Kodu buraya yazın
pass
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi