Tugas Bahasa Pemrograman


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 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 =      
                acak(10).ToString();        
            }
            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 = 
                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;           
        }

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.
{
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 

Daftar pustaka : www.csharp-indonesia.com