Fungsi Rekursif

Fungsi Rekursif

Rekursif adalah proses memanggil dirinya sendiri yang bisa dilakukan oleh fungsi atau prosedur pada pemrograman prosedural. Karena proses dalam rekursif ini terjadi secara berulang-ulang, maka harus ada kondisi yang membatasi perulangan tersebut, jika tidak maka proses tidak akan berhenti sampai memori yang digunakan untuk menampung proses tersebut tidak dapat menampung lagi/penuh. Biasanya rekursif ini digunakan untuk sesuatu yang membutuhkan perulangan, seperti faktorial, fibonaci dan pangkat. Kelebihan dari fungsi rekursif ini adalah program menjadi lebih singkat. Dan kekurangannya adalah memakan memori lebih besar, karena setiap bagian dari dirinya dipanggil akan membutuhkan sejumlah ruang memori untuk penyimpanan. Rekursif sering kali tidak bisa berhenti sehingga memori akan terpakai habis dan program bisa hang.


  • Faktorial :
Pada matematika, faktorial merupakan hasil perkalian dari sebuah bilangan (n), kemudian secara berturut di kurangi 1 (n-1) hingga bilangan akhir adalah 1. Bilangan n merupakan bilangan bulat positif. Penulisan n faktorial (n!) dituliskan sebagai berikut :

n! = n * (n-1) * (n-2) * (n-3) *.... *1
Pada java, penulisan rumus faktorial sebagai berikut
n * faktorial(n-1)
Contoh :
5! = 5 * 4 * 3 * 2 * 1 = 120

Contoh dalam pemrograman java:
Maka hasil yang dikeluarkan :


Penjelasan :
Misal n = 5
Dari pernyataan if, menunjukan jika nilai n = 0 atau n = 1, maka menghasilkan 1 karena 0! = 1 dan 1! = 1. Dan pernyataan pada else, itu menunjukkan nilai n bukan sama dengan 0 atau 1, dan akan dieksekusi ke rumus faktorial tersebut. Cara kerjanya yaitu (misal n = 5) maka :

Karena n = 5, maka dia langsung masuk ke pernyataan else
faktorial(5) = 5 * faktorial(4)
faktorial(4) = 4 * faktorial(3)
faktorial(3) = 3 * faktorial(2)
faktorial(2) = 2 * faktorial(1)
faktorial(1) = 1

Maka faktorial(5) = 5 * 4 * 3 * 2 * 1, akan menghasilkan 120

Github : Contoh faktorial dalam pemrogaman java

  • Fibonaci
Fibonaci adalah bilangan yang diawali dengan 0, kemudian 1 dan angka selanjutnya adalah penjumlahan dua angka sebelumnya.

Rumus dari fibonaci :
f(x) = 1, untuk x = 1 atau 2
f(x) =  f(x-1) + f(x-2), unutk x > 2

Contoh deret fibonaci :
0 1 1 2 3 5 8 13 21 34.....

Contoh dalam pemrograman java :

Maka hasil yang dikeluarkan :


Penjelasan :

Dari pernyataan if  menunjukkan bahwa jika n = 0 maka hasilnya 0 dan jika n = 1 atau 2 maka hasilnya 1. Dan jika n tidak sama dengan 0 atau 1, maka dia akan dieksekusi ke rumus fibonaci. Dan untuk mengulang pemanggilan fungsi rekursif  yaitu menggunakan loop for untuk menentukan jumlah deret fibonaci yang diinginkan .


  • Pangkat
Dalam fungsi pangkat x,y , kita tahu bahwa seua bilangan selain 0, jika dipangkatkan dengan 0 nilainya sama dengan 1. Jika x di pangkatkan dengan y, dengan y lebih dari 0, maka hasilnya sama dengan x dikalikan dengan x dipangkatkan y-1. Jika dituliskan dalam notasi matematika defenisinya adalah sebagai berikut :


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

Pada definisi y > 0, bentuk pemangkatan muncul kembali dibagian kanan(dikalikan dengan x^(y-1)). Disitulah fungsi rekursif terjadi.

Contoh :

(x,y) = (10,0)
         maka 10^0 = 1
(x,y) = (10,3)
         maka 10^3 = 10 * 10^2
                            = 10 * 10 * 10^1
                            = 10 * 10 * 10 = 1000

Contoh dalam pemrograman java :

Maka hasil yang dikeluarkan :


Penjelasan :

Jika y = 0 maka hasilnya adalah 1, jika y tidak sama dengan 0 maka akan di dieksekusi ke rumus pangkat. Dan untuk mengeluarkan hasilnya, kita panggil fungsi rekursifnya, disitu contoh fungsi rekursifnya adalah "pangkatRekursif(10,3)".


Ok, sekian pembahasan dari saya mengenai fungsi rekursif.





Komentar