p10 Algoprog4 Fungsi Rekursif PDF
p10 Algoprog4 Fungsi Rekursif PDF
Konsep Rekursi
Kebanyakan orang secara alamiah tidak
berfikir secara rekursif.
Contoh:
Faktorial dari bilangan integer non-negatif n, akan
dipecahkan sbg: n! = n * (n-1) * (n-2) * ... * 2 * 1
Factorial (4) = 4! = 4 * 3 * 2 * 1 = 4 * 3!
Factorial (3) = 3! = 3 * 2 * 1 = 3 * 2!
Factorial (2) = 2! = 2 * 1 = 2 * 1!
Factorial (1) = 1! = 1 = 1 * 0!
Factorial (0) = 0! = 1 // definisi khusus
1
Definisi rekursif untuk fungsi faktorial:
1, n=0 // kondisi penghentian
n!=
n * (n -1)!, n > 0 // langkah rekursif
Iteratif vs Rekursif
Versi Iteratif Fungsi Faktorial:
Faktorial:
long Factorial(long n)
{
int prod = 1, i;
2
Iteratif vs Rekursif
Versi Rekursif Fungsi Faktorial:
long Factorial(long n)
{
// kondisi penghentian adalah n == 0
if (n == 0)
return 1;
else
// langkah rekursif
return n * Factorial(n - 1);
}
Main
3
Pertimbangan Penggunaan
Rekursi
Meskipun penulisan program dengan cara rekursif bisa
lebih pendek, namun prosedur atau fungsi rekursif
memerlukan :
Memori yang lebih banyak, karena perlu tambahan untuk
Activation Record Stack.
Stack.
Waktu lebih lama, karena perlu menjejaki setiap pemanggilan
rekursif melalui Activation
Activation Record.
Record.
Secara umum,
umum, gunakan penyelesaian secara rekursif,
rekursif,
hanya jika :
Penyelesaian sulit dilaksanakan secara iteratif
Efisiensi dengan cara rekursif sudah memadai
Efisiensi bukan masalah dibandingkan dengan kejelasan logika
program
Pemborosan (Redundancy) dapat terjadi dalam
penyelesaian masalah secara rekursif.
Fib(1) Fib(0)
4
Latihan
Perpangkatan dua buah bilangan, mn, n>=0, dapat dituliskan
dalam bentuk definisi rekursif: