Rekursif adalah suatu proses atau
prosedur dari fungsi yang memanggil dirinya sendiri secara berulang-ulang.
Karena proses dalam Rekursif ini terjadi
secara berulang-ulang maka harus ada kondisi yang membatasi pengulangan persebut, jika tidak
maka proses tidak akan pernah berhenti sampai memori yang digunakan untuk
menampung proses tersebut tidak dapat menampung lagi (Penuh).
1. REKURSIF FACTORIAL
contoh program pada C++
outputnya adalah
ALGORITMA
#include <stdio.h> //library untuk proses input - output
#include <stdlib.h> // library untuk fungsi pause (fungsi jeda)
int main(void){ /* fungsi utama program yang menjalankan seluruh baris code
int main (void) mengembalikan nilai 0*/
int m; // deklarasi variabel integer private
int Faktorial (int k); // prototype fungsi rekrusif faktorial yang bertipe data integer
printf("Masukan sembarang bilangan bulat positif :"); // perintah untuk meminta input ke user, data yang diinput berupa bilangan bulat positif
scanf("%d",&m); // data yang diinputkan user akan ditampung dalam variabel m
printf("\nMelalui perhitungan rekursif, %d! = %d\n",m, Faktorial(m)); /*perintah untuk menampilkan kelayar, baik bilangan bulat dalam variabel m yang diinputkan user maupun hasil perhitungan rekrusif, sedangkan Faktorial(m) merupakan pemanggilan fungsi rekursif, dimana nilai yang dihitung dalam fungsi rekrusi diambil dari data yang diinputkan user yang ditampung dalam variabel m*/
system ("pause"); // fungsi jeda program, sehingga kita bisa melihat hasil input dan output program dan untuk mengakhiri program user harus menekan tombol enter
return 0; //program utama akan mengembalikan nilai 0
// fungsi rekrusif
int Faktorial(int k){ // fungsi yang bernama Faktorial dan bertipe data integer
nilai k = nilai yang diinputkan user yang ditampung dalam variabel m
if(k==0) // kondisi, dimana jika k==0, maka fungsi faktorial akan mengembalikan nilai 1
return 1; // perintah mengembalikan nilai 1
else // kondisi statement else akan dijalankan apabila kondisi k==0 tidak terpenuhi
return k*Faktorial(k-1); // pengembalian nilai k*Faktorial(k-1) dan sekaligus pemanggilan fungsi faktorial() sendiri
} // batas akhir dari fungsi faktorial