Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Struktur Data & Algoritma

Pelajaran 1 dari 17

Rekursi dan bagi-kuasai

Rekursi: kasus dasar dan langkah yang mengecil

Setelah pelajaran ini kamu bisa menulis fungsi rekursif dengan kasus dasar yang pasti tercapai dan menjelaskan RecursionError dari tumpukan panggilannya.

±13 menitDiperiksa 1 Okt 2026

Materi

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri untuk menyelesaikan versi masalah yang lebih kecil. Setiap fungsi rekursif punya dua bagian. Kasus dasar adalah masukan yang jawabannya langsung diketahui tanpa memanggil apa pun. Langkah rekursif memanggil fungsi yang sama dengan masukan yang lebih dekat ke kasus dasar, lalu memakai hasilnya. Kalau salah satu bagian hilang, fungsi itu tidak pernah selesai.

Rekursi dipakai ketika bentuk datanya sendiri bersarang dan kedalamannya tidak diketahui sebelumnya: folder di dalam folder, komentar yang membalas komentar, menu bertingkat. Perulangan for biasa butuh tahu berapa tingkat yang harus dibuka; rekursi cukup tahu cara membuka satu tingkat dan kapan berhenti.

def pangkat(basis, n):
    if n == 0:          # kasus dasar
        return 1
    return basis * pangkat(basis, n - 1)   # langkah yang mengecil

# pangkat(3, 4) -> 3 * pangkat(3, 3) -> ... -> 3 * 3 * 3 * 3 * 1 = 81

Setiap panggilan yang belum selesai disimpan di tumpukan panggilan bersama variabel lokalnya, lalu menunggu panggilan di bawahnya kembali. Panggilan pangkat(3, 4) menumpuk lima bingkai sebelum kasus dasar tercapai, lalu hasilnya dikalikan saat tumpukan dilepas satu per satu. Python membatasi kedalaman tumpukan ini; batasnya dapat dibaca dengan sys.getrecursionlimit(). Rekursi yang melewatinya berhenti dengan RecursionError: maximum recursion depth exceeded.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Fungsi def hitung(n): if n == 0: return 0; return 1 + hitung(n - 2) dipanggil sebagai hitung(5) dan berhenti dengan RecursionError. Apa penyebabnya?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke