Özyinelemeli Fonksiyonlar Bölüm 1
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 57 / 78.
Özyinelemeli bir işlev, kendisini çağıran bir işlevdir. Her çağrı, problem doğrudan yanıtlanabilecek kadar küçülene dek problemin daha küçük bir sürümünü çözer.
Bu işlev 1 ile n arasındaki tam sayıları toplar:
func sum_to_n(n: int) -> int:
if n == 0: # temel durum
return 0
return n + sum_to_n(n - 1) # özyinelemeli adımİki bölümü vardır:
- Temel durum, işlevi yeniden çağırmadan yanıt verir:
0'a kadar olan toplam0'dır. - Özyinelemeli adım, işlevi daha küçük bir değer olan
n - 1ile çağırır ve yanıtını bu sonuçtan oluşturur.
sum_to_n(3), 3 + sum_to_n(2) değeridir; bu da 3 + 2 + sum_to_n(1), o da 3 + 2 + 1 + sum_to_n(0) değeridir. Temel durum 0 değerini döndürür ve bekleyen çağrılar teker teker tamamlanır: sonuç 6 olur.
Her özyinelemeli adım, temel duruma yaklaşmalıdır. Bir temel durum olmadan ya da ona asla ulaşmayan n + 1 gibi bir adımla fonksiyon kendini çağırmaya devam eder. Godot, iç içe yaklaşık 1.000 çağrıya izin verir ve ardından programı bir hatayla durdurur.
Görev
KolayProgram bir tam sayı n (0 veya daha büyük) okur ve count_down(n) işlevini çağırır.
_ready() işlevinin altına, tek parametreli özyinelemeli count_down işlevini yazın. Argümanından başlayarak 0'a kadar her sayıyı satır başına bir tane olacak şekilde yazdırır. Döngü kullanmayın: işlev kendi sayısını yazdırır ve kendisini bir küçüğüyle çağırır.
3 girdisi için çıktı şöyledir:
3
2
1
0Kendin dene
extends Node
func _ready():
var n := int(OS.read_string_from_stdin())
count_down(n)
# Özyinelemeli count_down(n) fonksiyonunu aşağıya yazın
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