Menu
CoddyTech

Ö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 toplam 0'dır.
  • Özyinelemeli adım, işlevi daha küçük bir değer olan n - 1 ile ç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.

challenge icon

Görev

Kolay

Program 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
0

Kendin 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
quiz iconKendini test et

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

Kendi başına pratik yap: Online GDScript derleyicisi