Algoritma dan Struktur Data

Slides:



Advertisements
Presentasi serupa
REKURSIF.
Advertisements

Apakah Recursion itu ? Dr. Anto Satriyo Nugroho, M.Eng
Design and Analysis of Algorithm Recursive Algorithm Analysis
Suksesor bilangan asli adalah bilangan asli
Fungsi, Parameter, Rekursi Daniel Riano Kaparang Book reference: Jogiyanto. Konsep Dasar Pemrograman Bahasa C. Andi Star. Yogyakarta Kristanto Andri.
REKURSIF.
MATERI 9 FUNGSI REKURSIF.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
ARRAY (Lanjutan).
1 Ruli Manurung & Ade AzuratFasilkom UI - IKI /2008 – Ganjil – Minggu 4 Dasar-dasar Rekursif.
Rekursif Yuliana Setiowati.
Desain dan Analisis Algoritma
Modul 1- Review Java.
REKURSIF Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
Pemrograman Terstruktur
Function: Lanjutan Pertemuan ke 9..
Subprogram Minggu V – VI
Fungsi Rekursif.
Fungsi Rekursif Dasar Pemrograman.
sebuah fungsi yang memanggil dirinya sendiri
PART 7 TEKNIK REKURSIF DOSEN : AHMAD APANDI, ST.
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 KENDALI PROSES
STRUKTUR DATA recursive function.
Review-Dasar Pemrograman Komputer
Algoritma dan Struktur Data
Algoritma Divide and Conquer
Fungsi Fungsi.
Design and Analysis Algorithm
Algoritma dan Struktur Data
11. STRATEGI PARTISI DAN DIVIDE & CONQUER 11.1 Partisi Strategi Divide & Conquer Divide & Conquer M-ary 11.2 Contoh Divide & Conquer Sortir dengan Bucket.
Function User Function.
P ERULANGA N K OMPLEK S. BREAK Digunakan untuk menghentikan suatu proses perulangan yang sedang terjadi. Biasanya dikarenakan oleh suatu kondisi Break.
Bab 05 Tipe Data dan Mengisi Variabel
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.
if (condition) statement if (x == 100) cout << "x is 100";
Pertemuan 1 Rekursi jual [Valdo] Lunatik Chubby Stylus.
DIG1G3 Implementasi Struktur Data
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
Algoritma dan Struktur Data
Pertemuan 13 DYNAMIC PROGRAMMING : FIBONACCI SEQUENCE PROBLEM
STRUKTUR DASAR PROGRAM
Contoh Aplikasi Sederhana
Method (Metode).
FUNGSI.
Algoritma dan Pemrograman Rekursif
~ PERTEMUAN 8 STRUKTUR REKURSIF ~
Recursive function.
STRUKTUR DATA (10) recursive function
Algoritma Rekursif.
Algoritma Rekursif Alpro-2.
Algoritma Divide and Conquer
Rekursif By Serdiwansyah N. A..
BAB 14 RECURSION Pengertian Recursion. Recursion:
Analisa algoritma rekursif
if (condition) statement if (x == 100) cout << "x is 100";
Dasar-Dasar Pemrograman
PERTEMUAN V F U N G S I Tujuan membuat suatu fungsi
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
BAB 14 RECURSION Pengertian Recursion. Recursion:
Transcript presentasi:

Algoritma dan Struktur Data Pertemuan 4 Fungsi Rekursif

Apa itu fungsi rekursif? Sebuah fungsi dapat memanggil fungsi lain Sebuah fungsi dapat memanggil dirinya sendiri. Fungsi seperti demikian disebut fungsi rekursif Sebuah fungsi f juga disebut rekursif jika memanggil fungsi lain g dan di dalam g terdapat pemanggilan terhadap f Meski kurang efisien dibandingkan dengan fungsi iteratif yang memakai perulangan, pada beberapa kasus fungsi rekursif menyediakan solusi yang lebih natural dan sederhana

Apa itu fungsi rekursif? Permasalahan yang diselesaikan melalui fungsi rekursif memiliki beberapa karakteristik: Kasus sederhana dari permasalahan tersebut memiliki jawaban langsung yang disebut base cases. Contoh 0! = 1. Kasus yang lebih kompleks dapat didefinisikan secara sama namun dalam ukuran yang lebih kecil yang disebut recursive cases. Contoh: n! = n * (n-1)! Dengan menerapkan karakteristik 2 secara berulang kasus rekursif akan mendekati dan sampai pada base case. Contoh: n!  (n-1)!  (n-2)!  . . . 1!, 0!.

Apa itu fungsi rekursif? Strategi penyelesaian masalah pada kasus rekusif disebut decrease-and-conquer. Idenya ialah mengurangi ukuran permasalahan sampai menjadi kasus sederhana (dalam kasus ini decrease-and-conquer)yang memiliki penyelesaian jelas.

Format fungsi rekursif Pada umumnya fungsi rekursif memiliki bentuk sebagai berikut if this is a simple case solve it else redefine the problem using recursion

Format fungsi rekursif Cabang if merupakan base case, sedangkan bagian elsenya merupakan recursive case Bagian recursive case menyediakan pengulangan yang dibutuhkan yang menyederhanakan permasalahan dan base case menyediakan penghentian Agar rekursi dapat berhenti recursive cases harus mendekati base case di setiap pemanggilan fungsi rekursif

Contoh 1 : Recursive Factorial Contoh berikut menunjukkan fungsi iteratif dan rekursif dari fungsi faktorial Recursive version int factorial (int n) { if (n == 0) return 1; else return n * factorial (n-1); } Iterative version int factorial (int n) { int i, product=1; for (i=n; i>1; --i) product=product * i; return product; } Recursive Call

Contoh 1 : Recursive Factorial /* Computes the factorial of a number */ #include <stdio.h> int factorial(int n); /* shows how to call a user-define function */ int main(void) { int num, fact; printf("Enter an integer between 0 and 7> "); scanf("%d", &num); if (num < 0) { printf("Factorial not defined for negative numbers\n"); } else if (num <= 7) { fact = factorial(num); printf("The factorial of %d is %d\n", num, fact); } else { printf("Number out of range: %d\n", num); } system("pause"); return (0); /* Computes n! for n greater than or equal to zero */ int factorial (int n) { if (n == 0) //base case return 1; else return n * factorial (n-1); //recursive case }

Trace Eksekusi fungsi rekursif berlangsung dalam dua tahap Expansion di mana pada setiap pemanggilan fungsi rekursif makin mendekati base case “Substitution” di mana solusi dihitung secara terbalik mulai dari base case factorial(4) = 4 * factorial (3) = 4 * (3 * factorial (2)) = 4 * (3 * (2 * factorial (1))) = 4 * (3 * (2 * (1 * factorial (0)))) = 4 * (3 * (2 * (1 * 1))) = 4 * (3 * (2 * 1)) = 4 * (3 * 2) = 4 * 6 = 24 Expansion phase Substitution phase

Contoh 2: Perkalian Misalnya kita ingin menulis fungsi rekursif untuk mengalikan integer m dan integer n menggunakan penjumlahan Salah satu cara menyelesaikan ini melalui rekursif adalah dengan mengidentifikasi base case dan recursive case. Base case adalah jika n bernilai 1, jawabannya m. Recursive case adalah: m*n = m + m (n-1). m + m (n-1), n>1 m, n = 1 m*n

Contoh 2: Perkalian #include <stdio.h> int multiply(int m, int n); int main(void) { int num1, num2; printf("Enter two integer numbers to multiply: "); scanf("%d%d", &num1, &num2); printf("%d x %d = %d\n", num1, num2, multiply(num1, num2)); system("pause"); return 0; } int multiply(int m, int n) { if (n == 1) return m; /* simple case */ else return m + multiply(m, n - 1); /* recursive step */

Contoh 2: Perkalian Expansion phase multiply(5,4) = 5 + multiply(5, 3) = 5 + (5 + multiply(5, 2)) = 5 + (5 + (5 + multiply(5, 1))) = 5 + (5 + (5 + 5)) = 5 + (5 + 10) = 5 + 15 = 20 Substitution phase

Contoh 4: Bilangan Fibonacci Misalnya kita akan membuat fungsi untuk menghitung bilangan fibonacci ke n Bilangan Fibonacci dimulai dari 0 dan 1 serta memiliki sifat setiap bilangan ke n > 2 merupakan penjumlahan dua bilangan sebelumnya 0, 1, 1,2,3,5,8,13,21,34 … Sequence bilangan fibonacci adalah fib(n-1) + fib(n-2) n>1 n, n = 0, 1 fib(n)

Contoh 4: Fibonacci Function … #include <stdio.h> int fib(int n); int main(void) { int n; printf("Enter an integer n to find the nth fibonacci term: "); scanf("%d", &n); printf("fibonacci(%d) = %d\n", n, fib(n)); system("pause"); return 0; } int fib(int n) { if (n == 0 || n== 1) return n; /* simple case */ else return fib(n-1) + fib(n-2); /* recursive step */

Tracing menggunakan pohon rekursif Cara lain untuk melakukan trace pada fungsi rekursif adalah dengan menggambar pohon rekursif. Cara ini lebih sesuai jika pada recursive case terdapat lebih dari 1 pemanggilan fungsi rekursif Rrecursive tree of the Fibonacci function