FUNGSI REKURSIF PERTAMBAHAN
Fungsi rekursif adalah sebuah fungsi yang memanggil dirinya sendiri, karena fungsi ini memanggil dirinya sendiri, maka fungsi ini seperti looping atau perulangan. Fungsi ini berbeda dengan fungsi biasa, fungsi biasa hanya bisa memanggil fungsi lain tapi fungsi rekursif bisa memanggil dirinya sendiri.
Fungsi ini akan berjalan dan memproses rekuren / proses awal yang diulang-ulang dan akan berakhir dengan proses henti / basis, hasil akhir dari fungsi ini akan mengembalikan suatu nilai dari proses yang telah diulang-ulang fungsi tersebut.
Hal terpenting dalam pembuatan fungsi rekursif adalah kita harus membuat finite recursion / rekursif terbatas jika kita tidak buat ini maka fungsi rekursif akan selalu memanggil dirinya secara terus-menerus tanpa henti. Maka dari itu untuk membuat finite rekursif kita harus menentukan rekuren / proses awal dan basis / proses henti.
Sebagai contoh disini saya akan buat fungsi rekursif pertambahan 5 + 5. Rekuren / proses awalnya adalah 1 + dan proses hentinya jika d == 0 maka akan mengembalikan nilai c. Supaya lebih jelas berikut ini adalah notasi serta kode programnya.
Notasi
//Judul : Fungsi Rekursif Pertambahan C++
#include <iostream>
using namespace std;
//Kamus
a, b, c1, c2 <-- integer
//Memperkenalkan fungsi
tambahRekursif(int, int) <-- integer
//Diskripsi
main()
{
input a
input b
//Pertambahan langsung tanpa fungsi Rekursif
c1 <-- a + b;
output c1
c2 <-- tambahRekursif(a, b);
output c2
}
tambahRekursif(c, d <-- integer) <-- integer
{
//Kamus lokal
hasil <-- integer
if(d == 0) then
hasil <-- c;
else
hasil <-- 1 + tambahRekursif(c, (d-1));
return hasil;
}
Implementasi Notasi ke Koding
//Judul : Fungsi Rekursif Pertambahan C++
#include <iostream>
using namespace std;
//Kamus
int a, b, c1, c2;
//Dikenalkan fungsi
int tambahRekursif(int, int);
//Diskripsi
main()
{
cout << "Input a : ";
cin >> a;
cout << "Input b : ";
cin >> b;
//Pertambahan langsung tanpa fungsi Rekursif
c1 = a + b;
cout << "Hasil tanpa menggunakan fungsi : " << c1 << endl << endl;
c2 = tambahRekursif(a, b);
cout << "Hasil menggunakan fungsi Rekursif : " << c2 << endl << endl;
}
int tambahRekursif(int c, int d)
{
//Kamus lokal
int hasil;
//Basis / Proses Henti
if(d == 0)
{
hasil = c;
}
else //Rekuren / Proses awal yang akan diulang
{
hasil = 1 + tambahRekursif(a, (d-1));
}
return hasil;
}
Output
Cara Kerja Fungsi Rekursif
a = 5
b = 5
1 + tambahRekursif(5, (5-1)); --> Rekuren proses awal yang diulang
1 + tambahRekursif(5, (4-1));
1 + tambahRekursif(5, (3-1));
1 + tambahRekursif(5, (2-1));
1 + tambahRekursif(5, (1-1));
5 --> Basis proses henti
1+1+1+1+1+5 = 10
Dalam fungsi rekursif itu ada 2 parameter kita dapat memilih parameter yang
kanan atau yang kiri untuk dikurangi sampai habis / 0.
Seperti itulah kira-kira cara kerja dari fungsi rekursif.
Tantangan dalam membuat fungsi rekursif ini adalah kita harus bisa membuat
rekuren dan basis yang tepat agar nilai yang dikembalikan dari fungsi tersebut
memiliki nilai yang benar.
Pengembang harus sangat berhati-hati dengan rekursif karena sangat mudah untuk menulis fungsi yang tidak pernah berhenti, atau fungsi yang menggunakan memori atau daya prosesor dalam jumlah berlebih. Namun, jika ditulis dengan benar, rekursif dapat menjadi pemrograman yang sangat efisien.
Komentar
Posting Komentar