FUNGSI REKURSIF DALAM
BAHASA C#
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya
sendiri. Pada beberapa persoalan, fungsi rekursif sangat berguna karena
mempermudah solusi. Namun demikian, fungsi rekursif juga memiliki kelemahan,
yakni memungkinkan terjadinya overflow pada stack, yang berarti stack tidak
lagi mampu menangani permintaan pemanggilan fungsi karena kehabisan memori(
stack adalah area memori yang dipakai untuk variable lokal untuk mengalokasikan
memori ketika suatu fungsi dipanggil. Oleh karena itu, jika bisa diselesaikan dengan metode iteratif.
Bentuk umum fungsi rekursif.
return_data_type function_name(parameter_list)
{
...
function_name(...);
...
}
Contoh Algoritma program
rekursif : Faktorial
Fungsi rekursif dapat digunakan untuk menghitung faktorial. Berikut penjelasan beserta dengan contoh
listing programnya.
Fungsi faktorial
dapat dinyatakan dalam bentuk rekursif seperti berikut:
fak(n) = 1, untuk
n = 0 atau n = 1
fak(n) = n x
(n-1)!, untuk n > 0
faktorial(4)
4 * faktorial(3) 3 * faktorial(2) |
2 * faktorial(1)
|
faktorial(1) |
hasilnya: 24
|
Misalkan kita membuat project baru, klik file new
project, pada kotak project name silahkan isi nama project sesuai dengan
keinginan, tidak ada aturan khusus dalam penamaan project. untuk
langkah-langkah selanjutnya silahkan ikuti intruksi dibawah ini
Langkah 1 : tambahkan satu button dan satu datagridview padam form1. atur dan tata sedemikian rupa sehingga tampilannya seperti pada gambar dibawah ini khusus untuk datagridView tambahkan 2 kolom dengan cara klik kana pada datagridview dan klik add colomn
Langkah 1 : tambahkan satu button dan satu datagridview padam form1. atur dan tata sedemikian rupa sehingga tampilannya seperti pada gambar dibawah ini khusus untuk datagridView tambahkan 2 kolom dengan cara klik kana pada datagridview dan klik add colomn
Langkah 2. Pada button satu tambahkan source code
berikut ini
dataGridView1.Rows.Add(1000);
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(3);
dataGridView1.Rows[i].Cells[0].Value =
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(3);
dataGridView1.Rows[i].Cells[0].Value =
acak(10).ToString();
}
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(2);
dataGridView1.Rows[i].Cells[1].Value =
}
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(2);
dataGridView1.Rows[i].Cells[1].Value =
acak(10).ToString();
}
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(1);
dataGridView1.Rows[i].Cells[2].Value =
}
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(1);
dataGridView1.Rows[i].Cells[2].Value =
acak(10).ToString();
}
}
jangan lupa tambahkan library thread pada header program dengan using system.thread
langkah 3: kita tambahkan fungsi rekursif,
fungsi rekursif telah disiapkan, tinggal copy
paste ke form. berikut ini fungsi rekursif
tersebut. fungsi rekursif tersebut bernama
acak.
private int acak(int data)
{
int temp = 0;
Random acakku = new Random();
temp=acakku.Next(0, data);
if (temp == 8)
{
temp = acakku.Next(0, data);
return acak(6);
}
return temp;
}
{
int temp = 0;
Random acakku = new Random();
temp=acakku.Next(0, data);
if (temp == 8)
{
temp = acakku.Next(0, data);
return acak(6);
}
return temp;
}
pada source function diatas, sebenarnya mirip dengan fungsi biasa seperti dengan fungsi lain yang dibuat dengan C#, akan tetapi jika dilihat lebih cermat akan ada sedikit perbedaan, pada fungsi diatas fungsi acak melakukan pemanggilan terhadap dirinya sendiri, padahal pemanggilan itu terjadi di block statement fungsi acak. inilah yang dimaksud dengan rekursif fungsi, yaitu fungsi yang mengizinkan dirinya memanggil dirinya sendiri.
langkah 4 : Done, jalankan program.
jika langkah-langkah diatas dilakukan dengang benar, sewaktu program
dijalankan program akan menampilkan bilangan random pada datagrid. perhatikan
seksama pada dataGridview1.
Tapi setiap kali running hasilnya akan berbeda, tidak harus sama seperti
pada gambar diatas, karena kita menggunakan konsep random. pada datagridView1
perhatikan dengan seksama, pada dataGridView1 angka-angka yang dihasilkan
adalah angka antara 0 sampai 9, dan pada datagridVew1 tidak pernah ada nilai 8.
ini dikarenakan pada fungsi acak setiap kali
function tersebut menghasilkan nilai 8 fungsi
tersebut memanggil ulang dirinya sebelum sempat me return nilainya ke fungsi. sehingga angka 8 tidak pernah di return kan
ke fungsi. inilah yang dinamakan dengan fungsi
rekursif.
Contoh fungsi rekursif tidak
pada windows form application:
1.
factorial.@class program.
{
Static int factorial (int n)
{
int temp=1,fak;
for (int i=1;i<=n;i++)
{
fak=i*temp;
temp=fak;
}
return temp;
}
Static int rekfaktorial (int n)
{
if(n==0)
{
return 1;
}
else
{
return n*refaktorial(n-1);
}
2.
Static void Main (string[] args)
{
int n;
Console.Write(“Jumlah n factorial=”);
n=int.Parse(Console.ReadLine());
Console.Write(n+”Faktorial=”+factorial(n).Tostring());
Console.Readkey();
}
Download Materi di 4shared klik disini
Download Materi di Dropbox klik disini
Download Materi di Mediafire klik disini
Download Materi di 4shared klik disini
Download Materi di Dropbox klik disini
Download Materi di Mediafire klik disini
Daftar pustaka : www.csharp-indonesia.com