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=1m • 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