Dalam dunia pemrograman, rekursi adalah teknik yang sangat kuat dan elegan di mana sebuah fungsi memanggil dirinya sendiri secara langsung atau tidak langsung untuk menyelesaikan masalah. Konsep ini sering digunakan untuk memecahkan masalah yang dapat dibagi menjadi sub-masalah yang lebih kecil dan serupa, seperti penghitungan faktorial, urutan Fibonacci, atau traversal struktur data pohon.
Secara fundamental, rekursi membutuhkan dua komponen utama:
Faktorial dari bilangan bulat non-negatif $n$, dilambangkan $n!$, adalah hasil kali dari semua bilangan bulat positif kurang dari atau sama dengan $n$. Secara matematis, $5! = 5 \times 4 \times 3 \times 2 \times 1 = 120$.
Dalam konteks rekursif, $n! = n \times (n-1)!$. Kasus basisnya adalah $0! = 1$.
# Contoh 1: Fungsi Faktorial Rekursif def faktorial_rekursif(n): # Kasus Basis: Kondisi berhenti if n == 0 or n == 1: return 1 # Langkah Rekursif: Memanggil diri sendiri else: return n * faktorial_rekursif(n - 1) angka = 5 hasil = faktorial_rekursif(angka) print(f"Faktorial dari {angka} adalah: {hasil}")
Ketika kita memanggil `faktorial_rekursif(5)`, urutan eksekusinya adalah:
Deret Fibonacci adalah urutan bilangan di mana setiap angka adalah jumlah dari dua angka sebelumnya, dimulai dari 0 dan 1 (0, 1, 1, 2, 3, 5, 8, ...).
# Contoh 2: Fungsi Fibonacci Rekursif def fibonacci(n): # Kasus Basis: Dua kondisi awal if n <= 1: return n # Langkah Rekursif else: return fibonacci(n - 1) + fibonacci(n - 2) n_fib = 6 hasil_fib = fibonacci(n_fib) print(f"Suku Fibonacci ke-{n_fib} adalah: {hasil_fib}")
Meskipun tampak elegan, rekursi memiliki kelebihan dan kekurangan yang perlu dipertimbangkan saat merancang solusi dalam Python:
Sebagai kesimpulan, rekursi adalah alat penting dalam gudang senjata programmer Python. Gunakanlah ketika kejelasan kode sangat penting dan Anda yakin kedalaman rekursi tidak akan melebihi batas aman sistem Anda, atau ketika Anda bekerja dengan struktur data yang secara alami mendukung pendekatan rekursif.