Analisis Rekurens

advertisement
Analisis Rekurens
Tim ALPRO
Teknik Informatika
Tujuan
 Mahasiswa mampu memahami definisi
rekurens
 Berdasarkan definisi yang dipahami,
mahasiswa mampu memakai analisis
rekurens untuk konstruksi program
rekursif
 Mahasiswa mampu mengimplementasikan
program rekursif dalam bahasa C 
melalui praktikum
Pengertian Rekursif
• Definisi entitas (type, fungsi) disebut
rekursif jika definisi tersebut mengandung
terminologi dirinya sendiri.
Analisis Rekurens
• Teks program rekursif terdiri dari dua
bagian:
– Basis (Basis-0 atau Basis-1), yang
menyebabkan fungsi berhenti
– Bagian rekurens : mengandung pemanggilan
terhadap fungsi tersebut, dengan parameter
bernilai mengecil (menuju basis).
Contoh Definisi Rekursif
• Bilangan integer
– Basis : 0 adalah bilangan integer
– Rekurens : if x adalah bilangan integer
then x+1 adalah bilangan integer
• Bilangan integer ganjil
– Basis : 1 adalah bilangan integer ganjil
– Rekurens:if x adalah bilangan integer ganjil
then x + 2 adalah bilangan integer ganjil
Kerangka Rekursif
Fungsi (<list-parameter>) :
depend on
<kondisi-basis> :<ekspresi-1 >
<kondisi-rekurens>:Fungsi(<ekspresi-2 >)
Nilai Parameter Mengecil
Menuju ke Basis
Kerangka Fungsi Rekursif
int F (Param)
{
/* VAR lokal*/
if (kondisi Basis) /* Basis-0 atau Basis-1 */
{
return Ekspresi<berhenti>; }
else{ /* Rekurens */
return Ekspresi(F(Param mengecil))}
}
Studi Kasus 1:
Definisi Faktorial
• Definisi 1:
0! : 1
N! : N * (N-1) !
• Definisi 2:
1! : 1
N! : N * (N-1) !
• Definisi 3:
1! : 1
N! : (N+1)! / (N+1)
Nilai N mengecil
menuju basis = 1
Nilai N tidak pernah mencapai basis
Tidak Bisa Diimplementasikan
ke dalam fungsi rekursif
Notasi dari Faktorial
Fac (n)
: if n=0, then
1
else
Fac ( n – 1 ) * n
{basis-0}
{rekurens}
Contoh Program
Studi Kasus 2:
Definisi Penjumlahan
• Definisi :
• n=1m
• 1+1+1+.....+(sebanyak m)
Notasi Penjumlahan Rekursif
• Tambah (n,m)
:
if(n=0), then {basis-0}
m
else
{rekurens}
Tambah(n-1,m)+1
Contoh Program
Latihan
Perkalian Rekursif
• Perkalian a dan b adalah penjumlahan a
sebanyak b kali
Notasi Perkalian Rekursif
• Kali (a,b)
:
if(b=1), then {basis-1}
a
else
{rekurens}
Kali(a,b-1)+a
Download