Modul 4 - MOH RIFQI MSA
Modul 4 - MOH RIFQI MSA
PENDAHULUAN
Rekursif adalah konsep fundamental dalam ilmu komputer di mana suatu fungsi
atau prosedur memanggil dirinya sendiri sebagai bagian dari prosesnya. Konsep ini
pertama kali diperkenalkan oleh matematikawan Gottlob Frege pada awal abad ke-20,
dan kemudian secara luas diterapkan dalam pemrograman komputer. Salah satu contoh
paling terkenal dari penggunaan rekursi adalah dalam definisi matematika dari bilangan
Fibonacci, di mana setiap angka dalam urutan tersebut dihitung dengan menjumlahkan
dua angka sebelumnya. Fungsi rekursif dapat digunakan untuk menghitung urutan
Fibonacci ini dengan cara yang elegan. Rekursif juga sering digunakan dalam
penyelesaian masalah yang melibatkan struktur data seperti pohon dan grafik. Misalnya,
dalam penelusuran pohon biner, rekursi digunakan untuk menelusuri setiap simpul
dalam pohon secara efisien. Namun, penggunaan rekursif harus dilakukan dengan
hati-hati karena dapat menyebabkan kelebihan beban memori dan kinerja. Ketika
sebuah fungsi memanggil dirinya sendiri secara berulang, ini dapat mengakibatkan
tumpukan panggilan yang dalam, yang pada akhirnya dapat menghabiskan memori dan
menyebabkan program keluar karena kesalahan “stack overflow”. Untuk
menghindari masalah ini, diperlukan kasus dasar yang jelas di mana rekursif berhenti,
serta perencanaan yang bijaksana untuk memastikan bahwa panggilan rekursif tidak
berlanjut tak terbatas. Dalam beberapa kasus, teknik rekursif dapat diganti dengan
pendekatan iteratif yang lebih efisien
2.1 REKURSIF
Rekursif terutama berakar dalam konsep matematika dari definisi secara induktif.
Rekursif memanfaatkan ide bahwa kita dapat mendefinisikan suatu objek atau prosedur
dalam hal kasus dasar (base case) dan langkah induksi (inductive step). Konsep ini
digunakan dalam berbagai bidang ilmu komputer, termasuk algoritma, struktur data, dan
bahasa pemrograman. Misalnya, dalam algoritma pencarian biner, setiap langkah
rekursif membagi rentang pencarian menjadi setengahnya, sehingga mengurangi jumlah
elemen yang perlu dipertimbangkan. Dalam pemrograman dinamis, rekursif sering
digunakan untuk mendefinisikan masalah dalam hal submasalah yang lebih kecil. Solusi
untuk setiap submasalah kemudian digabungkan untuk membangun solusi akhir.
Selain itu, teori dasar tentang rekursif juga melibatkan pemahaman tentang
tumpukan (stack) dalam komputer. Setiap kali fungsi dipanggil, informasi tentang
panggilan tersebut disimpan dalam tumpukan. Ketika fungsi selesai dieksekusi,
informasi tersebut dihapus dari tumpukan. Dalam rekursif, tumpukan tumbuh secara
dinamis dengan setiap panggilan rekursif baru, dan mengecil saat panggilan selesai
dieksekusi. Dengan pemahaman yang baik tentang kasus dasar, langkah- langkah
induksi, dan pengelolaan tumpukan, seseorang dapat mengembangkan solusi rekursif
yang efektif dan efisien untuk berbagai masalah dalam ilmu komputer.
A. Fungsi Rekursif
Fungsi Rekursif adalah fungsi yang memanggil dirinya sendiri selama proses
eksekusi. Ini memungkinkan penyelesaian masalah secara iteratif dengan membagi
masalah menjadi submasalah yang lebih kecil. Fungsi rekursif dapat menawarkan solusi
yang elegan dan mudah dimengerti untuk berbagai masalah, terutama ketika masalah
tersebut secara alami dapat dibagi menjadi submasalah yang lebih kecil. Namun, perlu
berhati-hati untuk memastikan bahwa rekursif tidak menyebabkan kelebihan beban
memori atau kinerja yang buruk.
Dalam fungsi factorial, jika n adalah 0, maka hasilnya adalah 1 (kasus dasar). Jika
tidak, fungsi akan memanggil dirinya sendiri dengan argumen n-1 dan mengalikan
hasilnya dengan n. Proses ini berlanjut sampai mencapai kasus dasar, di mana hasil
akhir dikembalikan.
B. Factorial
Faktorial adalah operasi matematika yang dilambangkan dengan tanda seru (!)
dan didefinisikan sebagai hasil perkalian semua bilangan bulat positif dari 1 hingga
bilangan tersebut.
Berikut adalah contoh implementasi fungsi untuk menghitung faktorial dalam C++:
Bilangan Fibonacci adalah urutan bilangan di mana setiap angka adalah jumlah
dari dua angka sebelumnya dalam urutan tersebut. Biasanya, urutan dimulai dengan 0 dan
1. Jadi, urutan Fibonacci dimulai dengan 0, 1, 1, 2, 3, 5, 8, 13, 21, dan seterusnya.
Dalam contoh ini, fungsi fibonacci adalah implementasi rekursif dari bilangan
Fibonacci. Jika argumen adalah 0 atau 1, fungsi mengembalikan angka itu sendiri. Jika
tidak, fungsi akan memanggil dirinya sendiri dengan argumen \( n-1 \) dan \( n-2 \), dan
mengembalikan jumlah dari kedua panggilan tersebut. Proses ini berlanjut sampai
mencapai kasus dasar, di mana hasil akhir dikembalikan.
Output dari program ini akan menampilkan urutan Fibonacci hingga 10 angka
pertama: 0 1 1 2 3 5 8 13 21 34.
2. Kombinasi :
Algoritma ini beroperasi pada struktur data pohon, seperti pohon biner atau pohon
n-ary. Contoh dari algoritma ini termasuk traversal (penelusuran) pohon (preorder,
inorder, postorder), pencarian, dan operasi lainnya seperti penambahan atau
penghapusan node.
E. Algoritma Graf (Graph Algorithms) :
Algoritma ini digunakan untuk memproses struktur data graf, termasuk pencarian
jalur terpendek, penelusuran graf (misalnya, depth-first search dan breadth-first search),
serta algoritma lainnya seperti algoritma Dijkstra atau algoritma Bellman-Ford untuk
mencari jalur terpendek dalam graf berbobot.
BAB III
PERMASALAHAN
3.1 PERMASALAHAN
IMPLEMENTASI
4.1. IMPLEMENTASI
Pada gambar diatas merupakan program yang sudah diperbaiki dan sudah tidak
eror.
Terlihat pada gambar ouput program yang sudah diperbaiki diatas ketika kita
memasukkan angka maka program akan segera mengeluarkan angka faktorial dari angka
yang kita masukkan.
B. Program Rekursif Factorial C++
A. KESIMPULAN
Secara keseluruhan, rekursif adalah teknik pemrograman yang kuat di mana suatu
fungsi dapat memanggil dirinya sendiri untuk menyelesaikan masalah. Dengan
pemahaman yang baik tentang konsep dan praktik terbaik dalam penggunaan rekursif,
pengembang dapat memanfaatkannya untuk menulis kode yang lebih bersih, elegan, dan
efisien.
B. SARAN
Pastikan mahasiswa untuk memahami konsep dasar rekursif, termasuk kasus dasar,
langkah rekursif, dan cara kerja tumpukan pemanggilan Sebelum menggunakan
rekursif, pertimbangkan kinerja dan penggunaan memori. Kadang- kadang, pendekatan
iteratif dapat lebih efisien daripada rekursif.
DAFTAR PUSTAKA