Recursive function.

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.
REKURSIF.
1 Algoritma Bahasa Pemrograman dan Bab 1.1. Pengertian Algoritma.
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
REKURSIF Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
Design and Analysis of ALGORITHM (Session 3)
Pemrograman Terstruktur
Fungsi Rekursif.
Fungsi Rekursif Dasar Pemrograman.
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.
Function.
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.
Design and Analysis Algorithm
Algoritma dan Struktur Data
Matakuliah: T0034 / Perancangan & Analisis Algoritma Tahun: 2008 Pertemuan 1 PENGENALAN PERANCANGAN & ANALISIS ALGORITMA.
BAB 3 RECURSIVE FUNCTION. RECURSIVE Fungsi rekursif adalah fungsi yang melakukan pemanggilan terhadap dirinya sendiri, sehingga proses yang terjadi adalah.
1 Diselesaikan Oleh KOMPUTER Langkah-langkah harus tersusun secara LOGIS dan Efisien agar dapat menyelesaikan tugas dengan benar dan efisien. ALGORITMA.
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.
Rekursif Rizki Muliono,M.Kom.
Aplikasi Rekursif.
Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus.
DIG1G3 Implementasi Struktur Data
KOMUNIKASI DATA Materi Pertemuan 3.
Induksi Matematika.
Konsep pemrograman LOOP
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
Contoh-contoh Pemecahan Masalah TEE 2103 Algoritma & Pemograman
TEL 2112 Dasar Komputer & Pemograman Fungsi
Algoritma dan Struktur Data
Fungsi TEE 2103 Algoritma & Pemrograman Dosen: Abdillah, MIT
Pertemuan 13 DYNAMIC PROGRAMMING : FIBONACCI SEQUENCE PROBLEM
Dasar-Dasar Pemrograman
REKURSI Struktur data.
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2
Algoritma dan Pemrograman Subrutin (Function)
FUNGSI.
Algoritma dan Pemrograman Rekursif
~ PERTEMUAN 8 STRUKTUR REKURSIF ~
Soal-soal Pengulangan
Looping, Percabangan dan Array
TEL 2112 Dasar Komputer & Pemograman Fungsi
Rekursif- studi kasus.
STRUKTUR DATA (10) recursive function
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2
Algoritma Rekursif.
Algoritma Rekursif Alpro-2.
Rekursif By Serdiwansyah N. A..
Analisa algoritma rekursif
A SMALL TRUTH TO MAKE LIFE 100%. Hard Work H+A+R+D+W+O+R+K = 98% Knowledge K+N+O+W+L+E+D+G+E = 96%
Dasar-Dasar Pemrograman
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
Perulangan (Loop) Oleh : Tim Teaching
Transcript presentasi:

recursive function

Fungsi Rekursif Fungsi yang berisi definisi dirinya sendiri Fungsi yang memanggil dirinya sendiri Prosesnya terjadi secara berulang-ulang Yang perlu diperhatikan adalah “stopping role”

Plus - Minus +Karena program lebih singkat dan ada beberapa kasus yang lebih mudah menggunakan fungsi yang rekursif -Memakan memori yang lebih besar, karena setiap kali bagian dirinya dipanggil, dibutuhkan sejumlah ruang memori tambahan. -Mengorbankan efisiensi dan kecepatan -Problem: rekursi seringkali tidak bisa “berhenti” sehingga memori akan terpakai habis dan program bisa hang. -Program menjadi sulit dibaca Saran: jika memang bisa diselesaikan dengan iteratif, gunakanlah iteratif!

Bentuk Umum Fungsi Rekursif return_data_type function_name(parameter_list){ ... function_name(...); }

Problems Faktorial 5! = 5 x 4 x 3 x 2 x 1 4! = 4 x 3 x 2 x 1 Berarti 5! = 5 x 4! Metode Iteratif Salah satu cara untuk menghitung adalah dengan menggunakan loop, yang mengalikan masing-masing bilangan dengan hasil sebelumnya. Penyelesaian dengan cara ini dinamakan iteratif, yang mana secara umum dapat didefinisikan sebagai berikut: n! = (n)(n-1)(n-2) … (1)

Program Iteratif #include <stdio.h> int fact_it (int n) { } int i,fak; /****************************************************** * Menghitung sebuah faktorial dengan proses looping * ******************************************************/ temp = 1; for (i=1; i<=n; i++) fak = fak * i; return (fak); } void main() int fac; printf("Masukkan berapa faktorial : "); scanf("%d",&fac); printf("Hasil faktorial dari adalah : %d\n", fact_it(fac));

Faktorial Rekursif Metode Rekursif Cara lain untuk menyelesaikan permasalahan di atas adalah dengan cara rekursi, dimana n! adalah hasil kali dari n dengan (n-1)!. Untuk menyelesaikan (n-1)! adalah sama dengan n!, sehingga (n-1)! adalah n-1 dikalikan dengan (n-2)!, dan (n-2)! adalah n-2 dikalikan dengan (n-3)! dan seterusnya sampai dengan n = 1, kita menghentikan penghitungan n!

Faktorial Rekursif (2) n! = 1 if n=0 anchor n! = n*(n-1)! if n>0 inductive step 0! = 1 1! = 1*(1-1)! = 1*0! = 1*1 = 1 2! = 2*(2-1)! = 2*1! = 2*1 = 2 3! = 3*(3-1)! = 3*2! = 3*2 = 6

Program Rekursif #include <stdio.h> int fact_rec(int n) { } /********************************************************** Menghitung sebuah faktorial secara rekursif ***********************************************************/ if (n < 0) return 0; else if (n == 0) return 1; else if (n == 1) else return n * fact_rec(n-1); } void main() int fac; printf("Masukkan berapa faktorial : "); scanf("%d",&fac); printf("Hasil faktorial dari adalah : %d\n", fact_rec(fac));

Factorial (3): Decomposition and solution

Designing recursive algorithms Each call of a recursive algorithm either solves one part of the problem or it reduces the size of the problem. The general part of the solution is the recursive call. At each recursive call, the size of the problem is reduced.

Designing recursive algorithms The statement that “solves” the problem is known as the base case. Every recursive algorithm must have a base case. The rest of the algorithm is known as the general case. The general case contains the logic needed to reduce the size of the problem.

Designing recursive algorithms Once the base case has been reached, the solution begins. We now know one part of the answer and can return that part to the next, more general statement. This allows us to solve the next general case. As we solve each general case in turn, we are able to solve the next-higher general case until we finally solve the most general case, the original problem.

Designing recursive algorithms The rules for designing a recursive algorithm: First, determine the base case. Then determine the general case. Combine the base case and the general cases into an algorithm

Designing recursive algorithms Each recursive call must reduce the size of the problem and move it toward the base case. The base case, when reached, must terminate without a call to the recursive algorithm; that is, it must execute a return.

Recursive Another example

Fibonacci Sepasang kelinci yang baru lahir (jantan dan betina) ditempatkan pada suatu pembiakan. Setelah dua bulan pasangn kelinci tersebut melahirkan sepasang kelinci kembar (jantan dan betina). Setiap pasangan kelinci yang lahir juga akan melahirkan sepasang kelinci juga setiap 2 bulan. Berapa pasangan kelinci yang ada pada akhir bulan ke-12?

Fibo (2)

Fibo (3) Deret Fibonacci adalah suatu deret matematika yang berasal dari penjumlahan dua bilangan sebelumnya. 1, 1, 2, 3, 5, 7, 12, 19, …

Fibo Iteratif Secara iteratif int fibonacci(int n){ int f1=1, f2=1, fibo; if(n==1 || n==2) fibo=1; else{ for(int i=2;i<=n;i++){ fibo = f1 + f2; f1 = f2; f2 = fibo; } return fibo;

Fibo Rekursif int fibo_r (int n){ if(n==1) return 1; else if(n==2) return 1; else return fibo_r(n-1) + fibo_r(n-2); }

Bilangan Fibonacci Untuk N = 40, FN melakukan lebih dari 300 juta pemanggilan rekursif. F40 = 102.334.155 Berat!!! Aturan: Jangan membiarkan ada duplikasi proses yang mengerjakan input yang sama pada pemanggilan rekursif yang berbeda. Ide: simpan nilai fibonacci yang sudah dihitung dalam sebuah array

FPB (Faktor Persekutuan Terbesar) Misal FPB 228 dan 90: 228/90 = 2 sisa 48 90/48 = 1 sisa 42 48/42 = 1 sisa 6 42/6 = 7 sisa 0 FPB adalah hasil terakhir sebelum sisa = 0 adalah 6

FPB (2) Iteratif: FPB, m=228 dan n = 90 do{ r = m % n; if (r!=0){ n = r; } } while(r==0); Tampilkan n

FPB (3) Rekursif: int FPB(int m,int n){ if(m==0) return n; else if(m<n) return FPB(n,m); else return FPB(m%n,n); }

Ilustrasi FPB rekursif FPB(228,90) m>n FPB(48,90) m<n FPB(90,48) m>n FPB(42,48) m<n FPB(48,42) m>n FPB(6,42) m<n FPB(42,6) m>n FPB(0,6) m=0