DIG1G3 Implementasi Struktur Data

Slides:



Advertisements
Presentasi serupa
REKURSIF.
Advertisements

Desain Dan Analisis Algoritma
Design and Analysis of Algorithm Recursive Algorithm Analysis
Algoritma dan Struktur Data
Fungsi, Parameter, Rekursi Daniel Riano Kaparang Book reference: Jogiyanto. Konsep Dasar Pemrograman Bahasa C. Andi Star. Yogyakarta Kristanto Andri.
MATERI 9 FUNGSI REKURSIF.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
1 Ruli Manurung & Ade AzuratFasilkom UI - IKI /2008 – Ganjil – Minggu 4 Dasar-dasar Rekursif.
Rekursif Yuliana Setiowati.
Desain dan Analisis Algoritma
Pertemuan 2 INDUKSI MATEMATIKA & FUNGSI REKURSIF
REKURSIF Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
Pemrograman Terstruktur
Subprogram Minggu V – VI
sebuah fungsi yang memanggil dirinya sendiri
Sumber Kepustakaan : indryz.lecture.ub.ac.id/.../analisa-efisiensi- algoritm... 1  Fungsi yang memanggil dirinya sendiri  Sebuah fungsi f juga merupakan.
LOGIKA DAN ALGORITMA - PERTEMUAN 8 - REKURSI.
Method.
STRUKTUR DATA recursive function.
Fungsi Lecture 7. Motivation Complexity of programming problem  more difficult to consider the solution as a whole  clue: dividing the problem into.
Fungsi Fungsi.
Design and Analysis Algorithm
Algoritma dan Struktur Data
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
METHOD, ARRAY DAN STRING
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
Rekursi (Recursion) Fungsi rekursi adalah fungsi yang didalam function body- nya ada statement yang memanggil dirinya sendiri. Fungsi rekursif, sangat.
STRUKTUR DATA (10) recursive function
Algoritma dan Struktur Data
Bina Nusantara Mata kuliah:K0144/ Matematika Diskrit Tahun:2008 FUNGSI REKURSIF Pertemuan 10:
1 Pertemuan Fungsi Matakuliah: T0616 / Algoritma dan Pemrograman Tahun: 2007 Versi: 1/0.
OPERATOR DAN FUNGSI MATEMATIK. Operator  Assignment operator Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda.
Rekursif Rizki Muliono,M.Kom.
FUNGSI.
Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus.
Struktur Program TEE 2103 Algoritma dan Pemrograman
SUBALGORITMA.
Algoritme dan Pemrograman
Fungsi.
REKURSIF Learning Outcomes Pada akhir pertemuan ini, mahasiswa mampu:
Mata kuliah :K0362/ Matematika Diskrit Tahun :2008
Apa itu Fungsi? Sebuah fungsi adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik dan mengembalikan sebuah nilai dari tipe tertentu,
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2
TEL 2112 Dasar Komputer & Pemograman Fungsi
Algoritma dan Struktur Data
Fungsi TEE 2103 Algoritma & Pemrograman Dosen: Abdillah, MIT
Mata kuliah : K0144/ Matematika Diskrit Tahun : 2008
Procedure/Function/Method
As’ad Djamalilleil Function (Fungsi) As’ad Djamalilleil
Algoritme dan Pemrograman
REKURSI Struktur data.
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2
Method (Metode).
Algoritma dan Pemrograman Subrutin (Function)
Mata kuliah : K0144/ Matematika Diskrit Tahun : 2008
FUNGSI.
TEL 2112 Dasar Komputer & Pemograman Fungsi
Recursive function.
STRUKTUR DATA (10) recursive function
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2
Algoritma Rekursif.
Pertemuan 16 Deret bilangan
Algoritma Rekursif Alpro-2.
Algoritma dan Pemrograman FUNGSI (FUNCTION)
Rekursif By Serdiwansyah N. A..
Analisa algoritma rekursif
Dasar-Dasar Pemrograman
Dasar-Dasar Pemrograman
Algoritma & Pemrograman 1 Achmad Fitro The Power of PowerPoint – thepopp.com Chapter 3.
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
Transcript presentasi:

DIG1G3 Implementasi Struktur Data Fungsi Rekursif *Cahyana

Pengertian Fungsi rekursi adalah fungsi yang didalam function body-nya ada statement yang memanggil dirinya sendiri. Fungsi rekursif, sangat berguna dalam pemecahan masalah jika masalah tadi dapat didefinisikan secara rekursif pula. Contoh : Faktorial (n) atau n! didefinisikan sebagai berikut : n! = 1, untuk n = 0; n! = n * (n-1)!, untuk n > 0 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1* 0! 0! = 1 Bila ditelusur mundur : 4! = 1*2*3*4 = 24

Perhitungan 5 faktorial 5! (5 * 4!) (5 * (4 *3!)) (5 * (4 * (3 * 2!))) (5 * (4 * (3 * (2 * 1!)))) (5 * (4 * (3 * (2 * (1 * 0!))))) (5 * (4 * (3 * (2 * (1 * 1))))) (5 * (4 * (3 * (2 * 1)))) (5 * (4 * (3 * 2))) (5 * (4 * 6 )) (5 * 24) 120

Komponen Fungsi rekursif mempunyai dua komponen yaitu: Base case: mengembalikan nilai tanpa melakukan pemanggilan rekursi berikutnya. Reduction step: menghubungkan fungsi di suatu nilai input ke fungsi yang dievaluasi di nilai input yang lain. Sekuen nilai input harus konvergen ke base case. Fungsi faktorial Base case : n = 0 Reduction step: f(n) = n * f(n-1)

Fungsi Iteratif vs Rekursif Faktorial - Rekursif long faktor (int n) { if(n==0) return (1); else return(n * faktor(n-1)); } Faktorial - Iteratif long faktor(int n) { long i, fak = 1; for(i=1; i<=n; i++) fak *= i; return (fak); }

Kekurangan Rekursif (?) Meskipun penulisan program dengan cara rekursif bisa lebih pendek, namun procedure atau function rekursif memerlukan : Memori yang lebih banyak, karena perlu tambahan untuk mengaktifkan Stack. Waktu lebih lama, karena perlu menjejaki setiap pemanggilan rekursif melalui stack.

Kapan Menggunakan Rekursif ? Queue/rmb 30/10/'06 Kapan Menggunakan Rekursif ? Secara umum, gunakan penyelesaian secara rekursif, hanya jika : Penyelesaian sulit dilaksanakan secara iteratif Efisiensi dengan cara rekursif sudah memadai Efisiensi bukan masalah dibandingkan dengan kejelasan logika program Tidak mempertimbangkan faktor penghematan memori dan kecepatan eksekusi program Pertimbangan antara aspek kecepatan dan penghematan menggunakan iteratif, dibanding perancangan logika yang baik menggunakan rekursif

Contoh:Bilangan Fibonacci Queue/rmb 30/10/'06 Contoh:Bilangan Fibonacci Urutan bilangan 0, 1, 1, 2, 3, 5, 8, 13 … disebut bilangan fibonacci. Hubungan antara satu angka dengan angka berikutnya didefinisikan secara rekursi sebagai berikut : Fib(N) = N jika N = 0 atau 1 Fib(N) = Fib(N-2) + Fib(N-1) jika N >= 2

Bilangan Fibonacci int Fib(int n) { int f; if(n==0) f = 0; Queue/rmb 30/10/'06 Bilangan Fibonacci int Fib(int n) { int f; if(n==0) f = 0; else if(n==1) f = 1; else f = Fib(n-2) + Fib(n-1); return f; } Fungsi fib() di-samping ditulis secara rekursi dan disebut sebagai slow_Fib() tulislah fast_Fib() menggunakan iterasi.

Bilangan Fibonacci Contoh : Skema fibonacci jika N=4 FIB (4) FIB (3) 30/10/'06 Bilangan Fibonacci Contoh : Skema fibonacci jika N=4 FIB (4) FIB (3) FIB (2) FIB (1) FIB (0)

Bilangan Fibonacci Contoh : Skema fibonacci jika N=4 FIB (4) FIB (3) 30/10/'06 Bilangan Fibonacci Contoh : Skema fibonacci jika N=4 FIB (4) FIB (3) FIB (2) FIB (1) FIB (0)

Function Parameter Declaration Classic Function Parameter declaration Contoh: Function Parameter Declaration int fungsi1(a) int a; { a++; return a; } int fungsi2(b) int b; b = b * b; return b; #include <stdio.h> int main() { int x; x=fungsi1(3); printf("x=%d\n",x); x=fungsi2(13); return(0); }

Function Parameter Declaration Modern Function Parameter declaration Contoh: Function Parameter Declaration int fungsi1(int a) { a++; return a; } int fungsi2(int b) b = b * b; return b; #include <stdio.h> int main() { int x; x=fungsi1(3); printf("x=%d\n",x); x=fungsi2(13); return(0); }

Queue/rmb 30/10/'06 Latihan void listNumbers(int start, int end) that outputs the numbers from start to end to console. Write one version that outputs the numbers in ascending order, and another that outputs them in descending order. String repeat(String s, int n) that creates and returns a new string that is made by concatenating n copies of the parameter string s. For example, calling this method with the parameters “Hello” and 3 would return the string “HelloHelloHello”. If n equals zero, the method should return the empty string. int min(int[] a, int start, int end) that returns the smallest element between the indices start and end in the parameter array a.

Queue/rmb 30/10/'06 Latihan int mul(int a, int b) that computes the product of two integers a and b. The only arithmetic operation that you are allowed to use in this problem is addition +. double power(double a, int b) that calculates the power ab. You are allowed to use the multiplication operator *. int sumOfDigits(int n) that computes and returns the sum of digits of the positive integer n. For example, when called with the parameter 12345, this method would return 15. int reverseDigits(int n) that returns the positive integer that you get when you reverse the digits of parameter n. For xample, when called with the parameter 12345, this method would return 54321.o use the multiplication operator *.

Queue/rmb 30/10/'06 References Slide T0016 / Algoritma dan Pemrograman, “Pertemuan 15-16 - Fungsi”, Universitas Bina Nusantara, 2007 Thomas A. Standish,“Data Structures, Algorithms & Software Principles in C” Addison- Wesley, 1995 p. 253 ff (Chapter 7) Tjokorda Agung Budi Wirayuda, “PI1043 Struktur Data: Queue Data Structure”.