Algoritma Rekursif
Algoritma Rekursif
Kehidupan bersifat Ofensif,mengarah kepengulangan prosedur alam semesta.(Alfred Whitehead – Adventures Of ideas,1933)
Tulisan diatas merupakan kalimat pertama pada ketika aku membuka potongan Algoritma Recursif, Rekursifitas,yaitu salah satu kakas (tool) yang sangat penting dalam pemograman.Disebut sangat penting alasannya ialah rekursif menyediakan teknik penyelesaian duduk masalah yang didalamnya mengandung definisi duduk masalah itu sendiri.
Definisi rekursif
Definisi rekursif diturunkan secara matematik.Definisi yang tidak formal menyatakan bahwa sebuah objek dikatakan rekursif kalau ia didefinisikan menjadi lebih sederhana dalam terminologi dirinya sendiri. Niklaus Wirth mendefiniskan rekursive sebagai berikut:
An object is said recursive if partially consist or is defines in terms of it self
Fungsi Rekursif
Fungsi yang berisi definisi dirinya sendiri
Fungsi yang memanggil dirinya sendiri
Prosesnya terjadi secara berulang-ulang
Yang perlu diperhatikan ialah “stopping role”
Plus – Minus
+Karena aktivitas lebih singkat dan ada beberapa masalah yang lebih gampang memakai fungsi yang rekursif
-Memakan memori yang lebih besar, alasannya ialah setiap kali potongan dirinya dipanggil, diperlukan sejumlah ruang memori tambahan.
-Mengorbankan efisiensi dan kecepatan
-Problem: rekursi seringkali tidak dapat “berhenti” sehingga memori akan terpakai habis dan aktivitas dapat hang.
-Program menjadi sulit dibaca
Saran: kalau memang dapat diselesaikan dengan iteratif, gunakanlah iteratif!
Bentuk Umum Fungsi Rekursif
return_data_type function_name(parameter_list){
...
function_name(...);
...
}
Faktorial Rekursif
Metode Rekursif
Cara lain untuk menuntaskan permasalahan di atas ialah dengan cara rekursi, dimana n! ialah hasil kali dari n dengan (n-1)!.
Untuk menuntaskan (n-1)! ialah sama dengan n!, sehingga (n-1)! ialah n-1 dikalikan dengan (n-2)!, dan (n-2)! ialah n-2 dikalikan dengan (n-3)! dan seterusnya hingga dengan n = 1, kita menghentikan penghitungan n!
Program Rekursif
#include <iostream.h>
#include <conio.h>
int fact_rec(int n)
{
/**********************************************************
Menghitung sebuah faktorial secara rekursif
***********************************************************/
if (n < 0)
return 0;
else if (n == 0)
return 1;
else if (n == 1)
return 1;
else
return n * fact_rec(n-1);
}
void main()
{
int fac;
cout<<"Masukkan berapa faktorial : ";
cin>>fac;
cout<<"Hasil faktorial dari ialah : "<<fact_rec(fac)<<endl;
getch();
Selamat mencoba dan Semoga bermanfaat
Kehidupan bersifat Ofensif,mengarah kepengulangan prosedur alam semesta.(Alfred Whitehead – Adventures Of ideas,1933)
Tulisan diatas merupakan kalimat pertama pada ketika aku membuka potongan Algoritma Recursif, Rekursifitas,yaitu salah satu kakas (tool) yang sangat penting dalam pemograman.Disebut sangat penting alasannya ialah rekursif menyediakan teknik penyelesaian duduk masalah yang didalamnya mengandung definisi duduk masalah itu sendiri.
Definisi rekursif
Definisi rekursif diturunkan secara matematik.Definisi yang tidak formal menyatakan bahwa sebuah objek dikatakan rekursif kalau ia didefinisikan menjadi lebih sederhana dalam terminologi dirinya sendiri. Niklaus Wirth mendefiniskan rekursive sebagai berikut:
An object is said recursive if partially consist or is defines in terms of it self
Fungsi Rekursif
Fungsi yang berisi definisi dirinya sendiri
Fungsi yang memanggil dirinya sendiri
Prosesnya terjadi secara berulang-ulang
Yang perlu diperhatikan ialah “stopping role”
Plus – Minus
+Karena aktivitas lebih singkat dan ada beberapa masalah yang lebih gampang memakai fungsi yang rekursif
-Memakan memori yang lebih besar, alasannya ialah setiap kali potongan dirinya dipanggil, diperlukan sejumlah ruang memori tambahan.
-Mengorbankan efisiensi dan kecepatan
-Problem: rekursi seringkali tidak dapat “berhenti” sehingga memori akan terpakai habis dan aktivitas dapat hang.
-Program menjadi sulit dibaca
Saran: kalau memang dapat diselesaikan dengan iteratif, gunakanlah iteratif!
Bentuk Umum Fungsi Rekursif
return_data_type function_name(parameter_list){
...
function_name(...);
...
}
Faktorial Rekursif
Metode Rekursif
Cara lain untuk menuntaskan permasalahan di atas ialah dengan cara rekursi, dimana n! ialah hasil kali dari n dengan (n-1)!.
Untuk menuntaskan (n-1)! ialah sama dengan n!, sehingga (n-1)! ialah n-1 dikalikan dengan (n-2)!, dan (n-2)! ialah n-2 dikalikan dengan (n-3)! dan seterusnya hingga dengan n = 1, kita menghentikan penghitungan n!
Program Rekursif
#include <iostream.h>
#include <conio.h>
int fact_rec(int n)
{
/**********************************************************
Menghitung sebuah faktorial secara rekursif
***********************************************************/
if (n < 0)
return 0;
else if (n == 0)
return 1;
else if (n == 1)
return 1;
else
return n * fact_rec(n-1);
}
void main()
{
int fac;
cout<<"Masukkan berapa faktorial : ";
cin>>fac;
cout<<"Hasil faktorial dari ialah : "<<fact_rec(fac)<<endl;
getch();
Selamat mencoba dan Semoga bermanfaat