Pages

Sabtu, 01 Juni 2013

tugas 14

program tanya siswa:







































dan jika di RUN :


tugas Rekursif

untuk membuat dot program pascal:























dan ketika di RUN, maka tampilannya:


tugas 13 Rekursi


Rekursi dengan Pemrograman Komputer:

tugas Algoritma & pemrograman.
Rekursi merupakan teknik pemrograman yang menyebabkan suatu fungsi/prosedur memanggil dirinya sendiri. Pemanggilan diri sendiri ini berlangsung terus menerus sampai batas terkecil yang nilai dari fungsi tersebut disebutkan secara eksplisit. Salah satu contoh dari penerapan rekursi adalah perhitungan faktorial. Dalam faktorial, n! = n*(n-1)! dengan pengecualian 0! = 1. Berikut contoh perhitungannya:

0! = 1
1! = 1          = 1*(0!) = 1
2! = 2*1       = 2*(1!) = 2
3! = 3*2*1    = 3*(2!) = 6
4! = 4*3*2*1 = 4*(3!) = 24
dan seterusnya...

Dengan menggunakan pendekatan bahasa pemrograman, contoh perhitungan diatas dapat juga ditulis seperti berikut ini:

faktorial(0) = 1
faktorial(1) = 1 * faktorial(0)
faktorial(2) = 2 * faktorial(1)
faktorial(3) = 3 * faktorial(2)
faktorial(4) = 4 * faktorial(3)

Atau lebih singkatnya yaitu:

if (n == 0)
  faktorial(n) = 1;
else
  faktorial(n) = n * faktorial(n-1);

Sampai disini sudah mulai terlihat jelas wujud dari penerapan rekursi. Fungsi faktorial(n) diatas adalah contoh dari rekursi. Berikut ini contoh program lengkap yang menerapkan rekursi dalam perhitungan faktorial:
  1. using System;  
  2.   
  3. namespace Rekursi  
  4. {  
  5.   class Aritmatika  
  6.   {  
  7.     public static void Main(string[] args)  
  8.     {  
  9.       Console.Clear();  
  10.       Console.WriteLine("Menghitung faktorial n \n");  
  11.       Console.Write("n = ");  
  12.       int n = Int32.Parse(Console.ReadLine());  
  13.               
  14.       Aritmatika hitung = new Aritmatika();     
  15.       Console.WriteLine("{0}! = {1} ",n,hitung.faktorial(n));      
  16.     }  
  17.     
  18.     // fungsi rekursi  
  19.     long faktorial(int n)  
  20.     {  
  21.       try  
  22.       {  
  23.         if (n == 0)   
  24.           return (1);  
  25.         else   
  26.           return (n * faktorial(n-1));  
  27.       }  
  28.               
  29.       catch (Exception e)  
  30.       {  
  31.         Console.WriteLine(e.ToString());  
  32.         return 1;  
  33.       }  
  34.     }   
  35.   }  
  36. }  
Urutan proses pemanggilan fungsi faktorial diatas adalah sebagai berikut (sebagai contoh misal n=4):
1. faktorial(4) = 4 * faktorial(3)
2. faktorial(3) = 3 * faktorial(2)
3. faktorial(2) = 2 * faktorial(1)
4. faktorial(1) = 1 * faktorial(0)
5. faktorial(0) = 1 // akhir rekursi

Beberapa hal yang perlu diperhatikan dalam penerapan rekursi

Penghenti rekursi
Proses dalam rekursi harus ada titik akhir. Titik akhir disini merupakan batas dari fungsi untuk tidak lagi memanggil dirinya sendiri sekaligus awal dari proses pemberian nilai pada fungsi tersebut. Dari contoh diatas, fungsi faktorial tidak lagi memanggil dirinya sendiri saat n=0.

Penggunaan memori
Komputer mempunyai ruang memori yang terbatas. Setiap kali fungsi memanggil dirinya sendiri, ia memerlukan tambahan sejumlah memori. Jika proses ini terus menerus, pada akhirnya menyebabkan error StackOverflowException.

Efisiensi
Kita hampir selalu dapat menggantikan rekursi dengan loop. Loop tidak memiliki overhead dari pelewatan argumen, inisialisasi penyimpanan tambahan, dan pengembalian nilai. Kinerja program dapat lebih baik tanpa pemanggilan fungsi yang rekursif.

tgs 12

jawaban tgs dari soal program komputer:




























dan ketika di RUN akan menghasilkan tampilan: