Menu
CoddyTech

Fungsi Rekursif Bagian 1

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

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Setiap pemanggilan menyelesaikan versi masalah yang lebih kecil, sampai masalahnya cukup kecil untuk dijawab secara langsung.

Fungsi ini menjumlahkan bilangan bulat dari 1 hingga n:

func sum_to_n(n: int) -> int:
	if n == 0: # kasus dasar
		return 0
	return n + sum_to_n(n - 1) # langkah rekursif

Ini memiliki dua bagian:

  • Kasus dasar menjawab tanpa memanggil fungsi lagi: jumlah hingga 0 adalah 0.
  • Langkah rekursif memanggil fungsi dengan nilai yang lebih kecil, n - 1, lalu menyusun jawabannya dari hasil tersebut.

sum_to_n(3) adalah 3 + sum_to_n(2), yaitu 3 + 2 + sum_to_n(1), yaitu 3 + 2 + 1 + sum_to_n(0). Kasus dasar mengembalikan 0, lalu pemanggilan yang menunggu selesai satu per satu: hasilnya adalah 6.

Setiap langkah rekursif harus bergerak mendekati kasus dasar. Tanpa kasus dasar, atau dengan langkah seperti n + 1 yang tidak pernah mencapainya, fungsi akan terus memanggil dirinya sendiri. Godot mengizinkan sekitar 1.000 pemanggilan bertingkat, lalu menghentikan program dengan error.

challenge icon

Tantangan

Mudah

Program membaca bilangan bulat n (0 atau lebih) dan memanggil count_down(n).

Di bawah _ready(), tulis fungsi rekursif count_down dengan satu parameter. Fungsi ini mencetak setiap angka mulai dari argumennya hingga 0, satu angka per baris. Jangan gunakan perulangan: fungsi ini mencetak angkanya dan memanggil dirinya sendiri dengan angka yang lebih kecil berikutnya.

Untuk input 3, output-nya adalah:

3
2
1
0

Coba sendiri

extends Node

func _ready():
	var n := int(OS.read_string_from_stdin())
	count_down(n)

# Tulis fungsi rekursif count_down(n) di bawah ini
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