Apa itu Panggilan Rekursif?

Dalam pemrograman, panggilan rekursif adalah perintah dalam subrutin atau fungsi yang memberi tahu program untuk menjalankan subrutin yang sama lagi. Performa berulang mungkin merupakan akibat langsung dari fungsi tersebut, atau fungsi kedua dapat dipicu yang, pada gilirannya, merujuk kembali ke fungsi pertama. Panggilan rekursif memiliki beberapa kesamaan dengan infinite loop yang ditakuti, tetapi subrutin selalu memiliki pernyataan kondisional yang memberi tahu program kapan harus berhenti mengulangi rekursi.

Pria memegang komputer

Konsep rekursi mungkin paling baik diilustrasikan melalui penggunaan contoh. Misalkan seorang roofer menerapkan sirap baru ke rumah. Untuk memulai, ia harus membawa seikat sirap ke atap. Setelah ia memakukan berkas pertama di tempatnya, ia harus menuruni tangga, mengambil berkas lain dan memakukannya di tempatnya. Proses berlanjut sebagai rangkaian “pergi, ambil, kembali” hingga sirap terakhir diterapkan. Pada saat itu, tukang atap bebas untuk melanjutkan ke pekerjaan berikutnya atau pulang.

Meskipun contohnya adalah penyederhanaan yang berlebihan, ia berisi semua unsur dari panggilan rekursif. Ada titik awal, tukang atap harus mengambil apa yang dia butuhkan, kembali ke awal dan, ketika kondisi akhir terpenuhi, berhenti. Inilah yang pada dasarnya dilakukan oleh program; itu dimulai, mengimplementasikan suatu tindakan, kembali ke dirinya sendiri dan berakhir ketika kondisi akhir terjadi.

Kondisi akhir disebut sebagai kasus dasar. Hal ini penting untuk semua panggilan rekursif; tanpa itu, fungsi akan terus berulang. Paling-paling, ini menghasilkan pengurasan sumber daya memori sistem. Biasanya kelebihan beban akan membuat program macet di beberapa titik, tetapi pada saat masalah ditemukan, kerusakan yang signifikan dapat terjadi.

Pemrogram berpengalaman mungkin mengenali kesamaan antara panggilan rekursif dan loop “untuk” atau “sementara”. Jika, misalnya, tujuannya adalah untuk menemukan jumlah inventaris total semua stok dengan nomor bagian lebih besar dari 999, loop “untuk” memberi tahu program untuk menemukan semua instance yang memenuhi syarat dan loop “sementara” memberi tahu program untuk mengeksekusi loop hanya selama kondisi yang dinyatakan valid. Panggilan rekursif dapat dikatakan menggabungkan beberapa fitur dari loop ini dengan pernyataan “jika-maka-lain”; jika kondisi ini benar, maka lakukan ini, atau lakukan sesuatu yang berbeda jika kondisinya salah. Namun, rekursi biasanya memungkinkan kode yang lebih ringkas, dan memungkinkan masalah untuk diteruskan ke fungsi yang lebih dekat ke titik yang diperlukan.

Related Posts