Minggu, 30 September 2012

Rekursif di Java :D

Untuk postingan pertama saya kali ini mau curhat - curhat soal matkul ALGORITMA dan STRUKTUR DATA using JAVA nih brader
Semoga bermanfaat deh buat agan - agan n sista - sista sekalian ;)
langusng aja deh CEKIDOT !!!!!!!! ......

1. Dasar Teori
Rekursif adalah sebuah method dimana method tersebut mempunyai nilai kembalian berupa method itu sendiri. Maksudnya yaitu saat memberikan nilai balik method tersebut memanggil dirinya sendiri. Nah, untuk lebih jelasnya liat contoh Source Code ini aja deh :

Contoh Program Cek Bilangan Prima :
1. Tanpa Menggunakan Rekursi :
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rekursi;

import javax.swing.JOptionPane;

/**
 *
 * @author dije
 */
public class Prima2 {
    
    public static void tes(int n){
        boolean nilai = true;
        for(int i = 2 ; i < n ; i++){
            if( n % i == 0)
                nilai = false;
        }
        if(nilai){
            System.out.println("Bilangan "+n+" adalah Bilangan Prima");
        }
        else
            System.out.println("Bilangan "+n+" bukan Bilangan Prima");
    }
    
    public static void main(String[] args) {
        String str = JOptionPane.showInputDialog("Input n");
        int n = Integer.parseInt(str);
        tes(n);
    }
}


2. Dengan Menggunakan Rekursi
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rekursi;

import javax.swing.JOptionPane;

/**
 *
 * @author dije
 */
public class Prima {
    
    public static boolean tes(int n,int i){
        if( n % i == 0) return false;
        else{
            tes( n , i + 1 );
            return true;
        }
    }
    
    public static void main(String[] args) {
        String str = JOptionPane.showInputDialog("Input n");
        int n = Integer.parseInt(str);
        if(tes(n,2)) System.out.println("Bilangan "+ n +" bilangan prima");
        else
            System.out.println("Bilangan "+ n +" bukan bilangan prima");
    }
}


Berikutnya, beberapa contoh program sederhana menggunakan rekursi :
1. Program Fibonacci
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rekursi;

import javax.swing.JOptionPane;


/**
 *
 * @author dije
 */
public class Fibo {

    /**
     * @param args the command line arguments
     */
    
    public static int fibonaci(int n){
        if (n<=0 || n == 1)
            return n;
        else
            return fibonaci(n-2)+fibonaci(n-1);
    }
    
    public static void main(String[] args) {
        String s = JOptionPane.showInputDialog("Masukkan Batas Deret Fibonachi : ");
        int n = Integer.parseInt(s);
        for(int i = 0 ; i < n ; i++){
            System.out.print(fibonaci(i)+" ");
        }
    }
}
2. Program X pangkat Y
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rekursi;

import javax.swing.JOptionPane;

/**
 *
 * @author dije
 */
public class Pangkat {
    static int pangkat(int x,int y){
        if(y==0){
            return 1;
        }
        else
            return x*pangkat(x, y-1);
    }
    public static void main(String[] args) {
        String s = JOptionPane.showInputDialog("Masukkan x : ");
        int x = Integer.parseInt(s);
        String z = JOptionPane.showInputDialog("Masukkan y : ");
        int y = Integer.parseInt(z);
        System.out.println(x+" pangkat "+y+" = "+pangkat(x,y));
        
    }
}
3. Program Pascal
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rekursi;

import javax.swing.JOptionPane;

/**
 *
 * @author dije
 */
public class Pascal {
    public static int pascal(int brs, int pos){
        if(pos == 0 || pos == brs) 
            return 1;
        else
            return pascal(brs-1,pos) + pascal(brs-1,pos-1);
    }
    
    public static void main(String[] args) {
        String s = JOptionPane.showInputDialog("Masukkan Batas Segitiga Pascal : ");
        int n = Integer.parseInt(s);
        for(int i = 0 ; i < n ; i++){
            for(int j = 1 ; j < n ; j++){
                System.out.print("");
            }
            for(int j = 0 ; j <= i ; j++){
                System.out.print(pascal(i,j)+" ");
            }
            System.out.println();
        }
    }
}
4. Program Faktorial
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rekursi;

import javax.swing.JOptionPane;

/**
 *
 * @author dije
 */
public class Faktorial {
    static int faktorial(int x){
        if(x == 1) return 1;
        else return x*faktorial(x-1);
    }
    public static void main(String[] args) {
        String s = JOptionPane.showInputDialog("Masukkan Batas faktorial : ");
        int n = Integer.parseInt(s);
        for(int i = n ; i > 0 ; i--){
            System.out.print(i);
            if(i != 1)
                System.out.print(" x ");
            else
                break;
        }
        System.out.println(" = "+faktorial(n));
    }
}


SEKIAN yang bisa ane sampaikan semoga bermanfaat buat agan - agan semua. amiiiin :D
Tunggu postingan ane selanjutnya yaa. Kalo bisa tolong tinggalin jejak yaa .hha

Tidak ada komentar:

Posting Komentar