Menu
CoddyTech

Ö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:

  1. Temel durum, ne zaman durulacağını belirtir.
  2. Ö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ım

factorial(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"))
olleh
challenge icon

Gö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ğeri 0 olur
  • fibonacci(2) değeri 1 olur
  • n > 2 için fibonacci(n) değeri fibonacci(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
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