Menu
CoddyTech

Fungsi Rekursif Bagian 2

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 58 dari 78.

Setiap fungsi rekursif memiliki dua bagian yang sama:

  1. Kasus dasar menentukan kapan harus berhenti.
  2. Langkah rekursif memanggil fungsi dengan input yang lebih kecil.

Faktorial dari n adalah n * (n - 1) * ... * 1, jadi faktorial dari n adalah n dikalikan dengan faktorial dari n - 1:

func factorial(n: int) -> int:
	if n == 1: # kasus dasar
		return 1
	return n * factorial(n - 1) # langkah rekursif

factorial(5) memanggil factorial(4), yang memanggil factorial(3), hingga factorial(1), yang mengembalikan 1. Saat kembali, setiap pemanggilan melakukan perkalian: hasilnya adalah 120.

Input yang lebih kecil tidak harus berupa angka yang lebih kecil. string yang lebih pendek juga bisa. Fungsi ini membalik string:

func reverse_text(text: String) -> String:
	if text.length() <= 1: # kasus dasar
		return text
	return reverse_text(text.substr(1)) + text[0]

text.substr(1) adalah string tanpa karakter pertamanya. Fungsi tersebut membalik string yang lebih pendek itu dan menambahkan karakter pertama di akhir. String dengan nol atau satu karakter sudah terbalik, jadi itulah kasus dasar.

print(reverse_text("hello"))
olleh
challenge icon

Tantangan

Mudah

Tulis fungsi rekursif bernama fibonacci yang menerima bilangan bulat positif n dan mengembalikan bilangan Fibonacci ke-n:

  • fibonacci(1) adalah 0
  • fibonacci(2) adalah 1
  • untuk n > 2, fibonacci(n) adalah fibonacci(n - 1) + fibonacci(n - 2)

Sebagai contoh, fibonacci(6) mengembalikan 5 (urutan dimulai dengan 0, 1, 1, 2, 3, 5).

Pengujian akan memanggil fibonacci() sendiri. Jangan panggil fungsi itu, dan jangan cetak apa pun.

Coba sendiri

func fibonacci(n: int):
	# Tulis kodemu di sini
	pass
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online