Fungsi Rekursif
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri, baik secara langsung maupun tidak langsung. Pemanggilan fungsi rekursif secara langsung berarti dalam fungsi tersebut terdapat perintah untuk memanggil dirinya sendiri sedangkan secara tidak langsung berarti fungsi rekursif memanggil 1 atau lebih fungsi lain sebelum memanggil dirinya sendiri.
Fungsi Rekursif akan terus berjalan sampai kondisi berhenti terpenuhi, oleh karena itu dalam sebuah fungsi rekursif perlu terdapat 2 blok penting, yaitu blok yang menjadi titik berhenti dari sebuah proses rekursi dan blok yang memanggil dirinya sendiri. Fungsi rekursif tidak selalu lebih jelek daripada iteratif. Ada kalanya sebuah fungsi rekursif justru mempermudah penyelesaian masalah yang ditemui pada kasus iteratif (pengulangan).
Meskipun penulisan dengan fungsi rekursif lebih singkat dari fungsi iteratif, tapi fungsi rekursif memiliki kelemahan, yaitu memerlukan memori yang lebih banyak, karena perlu tambahan untuk ‘Activation Record Stack’. Dengan demikian waktu proses lebih lama, karena perlu menjejaki setiap pemanggilan rekursif melalui ‘Activation Record’. Karena setiap pemanggilan fungsi, register dan memory harus di push ke stack maka setelah selesai pemanggilan perlu diadakannya pop stack. untuk mengembalikan memory dan register kembali ke keadaan awal, ini sering disebut sebagai overhead.
Fungsi rekursif sebaiknya digunakan pada saat penyelesaian sulit diselesaikan secara iteratif, dan juga apabila efisiensi secara rekursif sudah memadai.Perlu diperhatikan juga bahwa pemborosan (Redundancy) dapat terjadi dalam
penyelesaian masalah secara rekursif.
0 comments:
Post a Comment