Rekursif Bagian 1

Rekursif merupakan salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri. Dalam dunia pemrograman, rekursif diimplementasikan dalam sebuah fungsi yang memanggil dirinya sendiri dan tergolong dalam dynamic programming.

Contoh fungsi rekursif misalnya adalah fungsi pangkat, faktorial, barisan Fibonacci, dan masih banyak lagi lainnya. Mari kita lihat satu demi satu.

Dalam fungsi pangkat xy , kita tahu bahwa semua bilangan selain 0, jika dipangkatkan dengan 0 nilainya sama dengan 1. Jika x dipangkatkan dengan y, dengan y lebih dari 0, maka hasilnya sama dengan x dikalikan dengan x dipangkatkan y – 1. Jika dituliskan dalam notasi matematika definisinya adalah sebagai berikut:

x^y = 1, jika y = 0
x^y = x * x^(y-1), jika y > 0

Kita lihat di atas pada definisi y > 0, bentuk pemangkatan muncul kembali di sisi kanan. Itulah yang disebut rekursif. Definisi rekursif selalu dimulai dengan kasus penyetop, penghenti, atau kasus dasar dari suatu permasalahan, dalam hal ini terjadi ketika nilai y = 0. Definisi rekursif yang lebih kompleks mengandung inti dari permasalahan yang akan dipecahkan, namun lebih sederhana. Dalam hal ini yang tadinya x dipangkatkan dengan y, kini bentuk pemangkatan menjadi lebih sederhana, yaitu y – 1. Hal ini dimaksudkan untuk “menggiring” masalah kompleks ke kasus dasar atau penyetop rekursinya.

Untuk x = 10 dan y = 0, hasil dari xy adalah 1. Untuk x = 10 dan y = 3 hasilnya dapat digambarkan sebagai berikut:


Ide dasar dalam memecahkan suatu masalah dengan rekursif adalah sebagai berikut:
1. Menentukan kasus penyetop atau kasus dasar di mana pemanggilan rekursif tidak lagi diperlukan (karena solusinya sudah diperoleh)
2. Menerapkan suatu langkah untuk menggiring kasus kompleks ke kasus penyetopnya dengan metode yang mencerminkan fungsinya.

Berikut ini code untuk perpangkatan dalam bahasa pemrograman Java.

package Pangkat;
/**
*
* @author Sigit Widiyanto
*/

public class Main {
public static int PangkatRekursif(int x, int y) {
if (y == 0) {
return 1;
}
else {
return x * PangkatRekursif(x, y - 1);
}
}

public static void main(String[] args) {
System.out.println("10 ^ 3 = " + PangkatRekursif(10, 3));
}
}


These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Furl
  • Reddit
  • Spurl
  • StumbleUpon
  • Technorati

Prime Number

Dalam logika pemrograman, kita cuma perlu memperhatikan mulai angka 2 dan seterusnya. Angka 0 jelas tidak mungkin, karena bilangan ini dibagi angka berapapun akan menghasilkan angka 0. Dan angka 1 juga kita abaikan saja, sebab angka 1 hanya bisa dibagi oleh dirinya sendiri, padahal bilangan prima itu syarat utamanya bisa dibagi oleh 2 bilangan natural yang nyata, yaitu angka 1 dan dirinya sendiri. (Note: bisa dibagi ini dalam artian menghasilkan bilangan bulat positif, bukan bilangan pecahan.)

Dasar Bilangan Prima.

Berikutnya mari kita coba lihat contoh pembagiannya, dimana kita sepakati bahwa angka pembagi tidak melibatkan angka 1.
2: hanya bisa dibagi 2.
3: hanya bisa dibagi 3.
4: bisa dibagi 2 dan 4 (lebih dari 1 pembagian, maka tidak termasuk bilangan prima).
5: hanya bisa dibagi 5.
6: bisa dibagi 2, 3, dan 6 (bukan bilangan prima).
Dst.


Penyelesaian dengan mod

Misalkan diketahui sebuah bilangan X, bagaimana cara menentukan bahwa bilangan X itu termasuk bilangan prima atau bukan?
Asumsi: X adalah bilangan yang lebih besar dari 2
Berarti bilangan-bilangan yang akan menjadi pembagi adalah mulai angka 2 sampai X-1.
Jika bilangan X bisa dibagi oleh minimal salah satu dari bilangan-bilangan mulai 2 sampai X-1, maka dapat dikatakan bahwa bilangan X adalah bukan bilangan prima.
Contoh:
Bilangan 9, sebagai pembaginya adalah 2, 3, 4, 5, 6, 7, dan 8
Untuk mengetahui bahwa suatu bilangan bisa dibagi atau tidak, paling mudah kita menggunakan bantuan mod (%), yang menyatakan sisa hasil bagi. Jika sisa hasil bagi 0 berarti bisa dibagi.
Kembali ke contoh.
9 mod 2 = 1 (hasil bukan 0, artinya tidak habis/bisa dibagi), lanjutkan,
9 mod 3 =0 (sudah cukup untuk menyimpulkan bahwa 9 adalah bukan bilangan prima.)
Tidak perlu kita uji dengan membagi 9 dengan angka 4 dan seterusnya.
Contoh lain: 11
11 mod 2 = 1
11 mod 3 = 2
11 mod 4 = 3
11 mod 5 = 1
11 mod 6 = 5
11 mod 7 = 4
11 mod 8 = 3
11 mod 9 = 2
11 mod 10 = 1
Tidak ada yang menghasilkan angka 0, berarti 11 termasuk bilangan prima.

Pseudocode

Sekarang kita coba dengan algoritma pemrogramannya.


KAMUS
i : integer
bil : integer
prima : boolean
ALGORITMA
prima ← false
input (bil)
if (bil=2) then
prima ← true
else
for i ← 2 to bil-1 do
if (bil mod i = 0) then
prima ← false
exit for // keluar dari looping
else
prima ← true
endif
endfor
endif

if (prima) then // prima=true
output ("Bilangan Prima")
else
output ("Bukan Bilangan Prima")
endif

Logika di atas bisa digunakan kalau kita ingin memeriksa hanya pada satu bilangan tertentu saja.
Bagaimana kalau soal kita kembangkan, menampilkan bilangan prima dari bilangan sekian sampai sekian. Maka tinggal kita kombinasikan dengan looping juga.

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Furl
  • Reddit
  • Spurl
  • StumbleUpon
  • Technorati

Menggunakan JOptionPane untuk Message

Coba kita lihat kode dibawah ini.

1 // Fig. 2.6: Welcome2.java
2 // Mencetak banyak baris dalam sebuah dialog box.
3
4 // Java packages
5 import javax.swing.JOptionPane; // program menggunakan JOptionPane
6
7 public class Welcome2 {
8
9 // main method, memulai Aplikasi Java
10 public static void main( String args[] )
11 {
12 JOptionPane.showMessageDialog(
13 null, "Welcome\nto\tJava\nProgramming!" );
14
15 System.exit( 0 ); // mengkahiri aplikasi dengan window
16
17 } // akhir main method
18
19 } // akhir class Welcome2


Penjelasan :

Coba kita lihat program di atas. Pada statement berwarna biru, terdapat sintaks import javax.JoptionPane, berarti kita mengambil packages yang ada pada javax.swing bernama program JoptionPane yang dapat memunculkan kotak dialog.

Kemudian kita lihat pada statement berwarna merah, terdapat sintaks untuk memanggil JoptionPane, dalam hal ini adalah MessageDialog dengan dua parameter. Pada parameter pertama kita isi dengan null dan untuk parameter ke-dua menggunakan teks yang akan kita munculkan.

Jika kita lihat pada teks tresebut terdapat statement “\n”, yang berguna untuk mengganti baris dalam mencetak. Untuk lebih jelasnya mari kita lihat output program di atas.


Output :


These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Furl
  • Reddit
  • Spurl
  • StumbleUpon
  • Technorati

Perkenalan JAVA

Berikut ini, sebuah program Java yang sederhana


1 // Fig. 2.1: Welcome1.java
2 // Text-printing program.
3
4 public class Welcome1 {
5
6 // main method begins execution of Java application
7 public static void main( String args[] )
8 {
9 System.out.println( "Welcome to Java Programming!" );
10
11 } // end method main
12
13 } // end class Welcome1


Output dari program di atas sebagai berikut:

Welcome to Java Programming!

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Furl
  • Reddit
  • Spurl
  • StumbleUpon
  • Technorati