Rekursi Python (Fungsi Rekursif)

Dalam tutorial ini, Anda akan belajar membuat fungsi rekursif (fungsi yang memanggil dirinya sendiri).

Apa itu rekursi?

Rekursi adalah proses mendefinisikan sesuatu dalam istilah itu sendiri.

Contoh dunia fisik adalah menempatkan dua cermin paralel saling berhadapan. Objek apa pun di antara mereka akan dipantulkan secara rekursif.

Fungsi Rekursif Python

Dengan Python, kita tahu bahwa suatu fungsi dapat memanggil fungsi lain. Bahkan dimungkinkan bagi fungsi untuk memanggil dirinya sendiri. Jenis konstruksi ini disebut sebagai fungsi rekursif.

Gambar berikut menunjukkan kerja fungsi rekursif yang disebut recurse.

Fungsi Rekursif dengan Python

Berikut adalah contoh fungsi rekursif untuk mencari faktorial dari sebuah bilangan bulat.

Faktorial suatu angka adalah hasil kali semua bilangan bulat dari 1 sampai angka itu. Misalnya, faktorial dari 6 (dilambangkan sebagai 6!) Adalah 1 * 2 * 3 * 4 * 5 * 6 = 720.

Contoh fungsi rekursif

 def factorial(x): """This is a recursive function to find the factorial of an integer""" if x == 1: return 1 else: return (x * factorial(x-1)) num = 3 print("The factorial of", num, "is", factorial(num))

Keluaran

 Faktorial 3 adalah 6

Dalam contoh di atas, factorial()adalah fungsi rekursif karena memanggil dirinya sendiri.

Saat kita memanggil fungsi ini dengan bilangan bulat positif, fungsi ini akan secara rekursif memanggil dirinya sendiri dengan mengurangi angkanya.

Setiap fungsi mengalikan bilangan dengan faktorial dari bilangan di bawahnya hingga sama dengan satu. Panggilan rekursif ini dapat dijelaskan dalam langkah-langkah berikut.

 faktorial (3) # panggilan pertama dengan 3 3 * faktorial (2) # panggilan ke-2 dengan 2 3 * 2 * faktorial (1) # panggilan ke-3 dengan 1 3 * 2 * 1 # kembali dari panggilan ke-3 sebagai nomor = 1 3 * 2 # kembali dari panggilan kedua 6 # kembali dari panggilan pertama

Mari kita lihat gambar yang menunjukkan proses langkah demi langkah dari apa yang sedang terjadi:

Bekerja dari fungsi faktorial rekursif

Rekursi kami berakhir ketika angka tersebut berkurang menjadi 1. Ini disebut kondisi dasar.

Setiap fungsi rekursif harus memiliki kondisi dasar yang menghentikan rekursi atau fungsi memanggil dirinya sendiri tanpa batas.

Penerjemah Python membatasi kedalaman rekursi untuk membantu menghindari rekursi tak terbatas, yang mengakibatkan luapan tumpukan.

Secara default, kedalaman rekursi maksimum adalah 1000. Jika batasnya dilintasi, itu akan menghasilkan RecursionError. Mari kita lihat satu kondisi seperti itu.

 def recursor(): recursor() recursor()

Keluaran

 Traceback (panggilan terakhir terakhir): File "", baris 3, di File "", baris 2, di "" File, baris 2, di File "", baris 2, di (Baris sebelumnya diulang 996 kali lagi ) RecursionError: kedalaman rekursi maksimum terlampaui

Keuntungan Rekursi

  1. Fungsi rekursif membuat kode terlihat bersih dan elegan.
  2. Sebuah tugas kompleks dapat dipecah menjadi sub-masalah yang lebih sederhana menggunakan rekursi.
  3. Pembuatan urutan lebih mudah dengan rekursi daripada menggunakan beberapa iterasi bersarang.

Kekurangan Rekursi

  1. Terkadang logika di balik rekursi sulit untuk diikuti.
  2. Panggilan rekursif mahal (tidak efisien) karena menghabiskan banyak memori dan waktu.
  3. Fungsi rekursif sulit untuk di-debug.

Artikel yang menarik...