Rekursif. Rekursif adalah salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri.

dokumen-dokumen yang mirip
ALGORITHM. 3 Rekursif Algorithm. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

5.3 RECURSIVE DEFINITIONS AND STRUCTURAL INDUCTION

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

Perulangan Rekursif dan Perulangan Iteratif

Algoritma Pemrograman

Algoritma Pemrograman

5.3 RECURSIVE DEFINITIONS AND STRUCTURAL INDUCTION

Algoritma Pemrograman

Solusi Rekursif pada Persoalan Menara Hanoi

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA April 1, 2010 BAB 8 REKURSIF

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 03

REKURSIF. Arkham Zahri Rakhman, S.Kom., M.Eng. Rev.: Dr. Fazat Nur Azizah

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 3

BAB V Tujuan 5.1 Rekursi Dasar

REKURSIF. Dari bahan Dasar Pemrograman oleh: Arkham Zahri Rakhman Rev.: Fazat Nur Azizah

Design and Analysis Algorithm

Pemrograman Dasar L A T I H A N M E T H O D / F U N G S I M E T H O D R E K U R S I F

Catatan Kuliah STRUKTUR DATA BAB III REKURSIF

BAB II PROSES REKURSI DAN ITERASI

Alat Peraga Menara Hanoi untuk Pembelajaran Pola Bilangan. Oleh: Tim Unit Media Alat Peraga Matematika

Fungsi Rekursif. Bentuk umum fungsi rekursif.

I Putu Gede Darmawan

Pertemuan 4 Diagram Alur / Flowchart

Algoritma dan Struktur Data

Karena relasi rekurens menyatakan definisi barisan secara rekursif, maka kondisi awal merupakan langkah basis pada definisi rekursif tersebut.

Design and Analysis of Algorithm

Sesi/Perkuliahan ke: VII

FUNGSI. setiap elemen di dalam himpunan A mempunyai pasangan tepat satu elemen di himpunan B.

Materi ke-4 Praktikum Algoritma dan Pemrograman kelas Matematika PEMROGRAMAN MODULAR

Aplikasi Rekursif dalam Analisis Sintaks Program

Design and Analysis of Algorithms CNH2G3- Week 5 Kompleksitas waktu algoritma rekursif part 2: Metode Karakteristik

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

Design and Analysis of Algorithms CNH2G3- Week 4 Kompleksitas waktu algoritma rekursif part 1

Dasar Komputer & Pemrograman 2A

Function. Pertemuan 7 Jurusan Sistem Informasi Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Gunadarma 2015

Struktur Data & Algoritme (Data Structures & Algorithms)

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Outline. Apa itu Recursion? Recursion

INDUKSI MATEMATIKA PERTEMUAN KE- 4

Pertemuan 3 Prosedur dan Fungsi

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

menunjukkan tipe hasil dari fungsi. sqr, succ dan sebagainya. buat sendiri.

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

A. TUJUAN PEMBELAJARAN

Algoritma Pemrograman

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

Algoritma Pemrograman

Pertemuan 4 Fungsi Rekursif

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi.

Fungsi Rekursif PEMROGRAMAN DASAR. Dr. Eng. Herman Tolle, ST., MT. Sistem Informasi PTIIK UB Semester Ganjil 2014/2015

Design and Analysis of Algorithm

Recursion, Algoritma, Struktur Data. Recursion. Erick Pranata. Edisi I

Algoritma Pemrograman 2B (Pemrograman C++)

BAB I TUJUAN DAN LANDASAN TEORI

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Teori Algoritma. Algoritma Perulangan

Problem A. Turnamen Panco

Apakah Anda sering kesulitan untuk

FUNGSI. Blok fungsi juga diawali dengan kata cadangan Begin dan di akhiri dengan kata cadangan End dan titik koma.

Subprogram. Definisi

Soal Ujian Akhir Semester Pendek TA. 2006/2007 D3-Manajemen Informatika

Refreshing Materi Kuliah Semester Pendek 2010/2011. Logika dan Algoritma. Heri Sismoro, M.Kom.

Induksi Matematik. Bahan Kuliah IF2120 Matematika Diskrit. Oleh: Rinaldi Munir. Program Studi Teknik Informatika STEI - ITB

CHAPTER 8. Advanced Counting Techniques

PERTEMUAN 7 REVIEW (QUIZ)

PROCEDURE DAN FUNCTION PROCEDURE. Parameter dalam Prosedur: C/: PROGRAM CONTOH_2; VAR p,l,t,vol,panj : real;

STRUKTUR DASAR ALGORITMA

Algoritma Pemrograman

BAB I PENDAHULUAN. penggunaan penalaran logika, dan abstraksi, matematika berkembang dari

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

Konstruksi Dasar Algoritma

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

Algoritma Pendukung Kriptografi

BAB V S U B R U T I N STMIK AMIKOM PURWOKERTO

Modul Algoritma Dan Pemrograman Pascal

Induksi Matematik Program Studi Teknik Informatika STEI - ITB

Algoritma Pemrograman

CCH1A4 / Dasar Algoritma & Pemrogramanan

Algoritma Pemrograman

STRUKTUR DASAR ALGORITMA

MODUL 6 PERULANGAN. A. String. 1. Instansiasi dan Inisialisasi. M0601xxyyy.jar

Penerapan Relasi Rekursif dan Matriks dalam Partisi Bilangan Bulat

Algoritme dan Pemrograman

Algoritma Pemrograman

Teori Algoritma. Struktur Algoritma

Algoritma Pemrograman

Algoritma Pemrograman

SOAL 1 2: Teori Deret bilangan Fibonacci didefisikan secara rekursif sbb. f1 = 1 f2 = 1. fn = fn-1 + fn-2 untuk semua n>2

Aturan Penulisan Algoritma Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu : Judul (Header) Kamus Algoritma

Recursion, Algoritma, Struktur Data. Recursion. Erick Pranata. Edisi II

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

BAB II STACK (TUMPUKAN)

Algoritma & Pemrograman FUNGSI. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

Algoritma Pemrograman

BAB VII ALGORITMA DIVIDE AND CONQUER

PROSEDUR DAN FUNGSI. Altien Jonathan Rindengan, S.Si., M.Kom

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

Konsep Dasar Pemrograman

Bab 1 Algoritma dan Pemrograman Tersruktur

Transkripsi:

Rekursif Rekursif adalah salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri. Dalam dunia pemrograman, rekursi diimplementasikan dalam sebuah fungsi yang memanggil dirinya sendiri

Contoh fungsi rekursif misalnya adalah fungsi pangkat, faktorial, dan barisan fibonacci. Dalam fungsi pangkat xy, kita tahu bahwa semua bilangan selain 0, jika dipangkatkan dengan 0 nilainya sama dengan 1. Jika x dipangkatkan dengan y, dengan y lebih dari 0, maka hasilnya sama dengan x dikalikan dengan x dipangkatkan y 1.

Jika dituliskan dalam notasi matematika definisinya adalah sebagai berikut: Kita lihat di atas pada definisi y > 0, bentuk pemangkatan muncul kembali di sisi kanan. Itulah yang disebut rekursif.

Definisi rekursif selalu dimulai dengan kasus penyetop, penghenti, atau kasus dasar dari suatu permasalahan, dalam hal ini terjadi ketika nilai y = 0. Definisi rekursif yang lebih kompleks mengandung inti dari permasalahan yang akan dipecahkan, namun lebih sederhana. Dalam hal ini yang tadinya x dipangkatkan dengan y, kini bentuk pemangkatan menjadi lebih sederhana, yaitu y 1. Hal ini dimaksudkan untuk menggiring masalah kompleks ke kasus dasar atau penyetop rekursinya.

Untuk x = 10 dan y = 0, hasil dari x y adalah 1. Untuk x = 10 dan y = 3 hasilnya dapat digambarkan sebagai berikut: Ide dasar dalam memecahkan suatu masalah dengan rekursif adalah sebagai berikut:

Contoh Lain Mari kita lihat contoh rekursif yang jauh lebih sederhana,masalah yang akan dipecahkan adalah memotong roti tawar tipis-tipis sampai habis. Jika masalah ini akan dipecahkan secara rekursif, maka solusinya adalah: 1. Jika roti sudah habis atau potongannya sudah paling tipis, pemotongan roti selesai 2. Jika roti masih bisa dipotong, potong tipis dari tepi roti tersebut, lalu lakukan prosedur 1 dan 2 untuk sisa potongannya.

Contoh Program program faktorial; uses wincrt; var faktor :real; i,n :integer; begin write('masukkan bilangan n =');readln(n); faktor:=1; for i:= 2 to n do {Menghitung n faktorial} faktor:=faktor*i; writeln(n,' Faktorial = ',faktor:0:0); end.

Hasil Program Masukan Bilangan n = 3 3 Faktorial 6 Masukan Bilangan n = 2 2 Faktorial 1

Kita dapat menuliskan fungsi penghitung factorial seperti dibawah ini 1. int Faktorial(int n) 2. { 3. if ((n == 0) (n == 1 )) 4. return (1); 5. else 6. return (n * Faktorial(n-1)); 7. } Pada baris 3 dari fungsi diatas, nilai n dicek sama dengan 0 atau 1, jika ya, maka fungsi mengembalikan nilai 1 {baris 4}, jika tidak, fungsi mengembalikan nilai n * Faktorial (n -1) {baris 6} disinilah letak proses rekursif itu, perhatikan fungsi factorial ini memanggil dirinya sendiri tetapi dengan parameter (n-1)

Barisan yang didefinisikan secara rekursif Contoh: Barisan bilangan pangkat dari 2 a n = 2 n untuk n = 0, 1, 2,. Barisan ini dapat didefinisikan secara rekursif: a 0 = 1 a n+1 = 2a n untuk n = 0, 1, 2, Langkah-langkah untuk mendefinisikan barisan secara rekursif: 1. Langkah basis: Spesifikasi anggota awal. 2. Langkah rekursif: Berikan aturan untuk membangun anggota baru dari anggota yang telah ada.

Contoh barisan yang didefinisikan secara rekursif Berikan definisi rekursif dari a n =r n, dengan r N, r 0 dan n bilangan bulat positif. Solusi: Definisikan a 0 =r 0 =1 dan a n+1 =r. a n untuk n = 0, 1, 2,

Contoh: definisi rekursif himpunan Ekspresi Aritmatika EA Basis: 1, 2, 3, 4, 5 EA Rekursif: jika a EA dan b EA, maka a + b EA a b EA a b EA a b EA

Legenda Menara Hanoi (oleh Edouard Lucas abad 19) Seorang biarawan memiliki 3 menara. Diharuskan memindahkan 64 piringan emas. Diameter piringan tersebut tersusun dari ukuran kecil ke besar. Biarawan berusaha memindahkan semua piringan dari menara pertama ke menara ketiga tetapi harus melalui menara kedua sebagai menara tampungan. Kondisi: Piringan tersebut hanya bisa dipindahkan satu-satu. Piringan yang besar tidak bisa diletakkan di atas piringan yang lebih kecil. Ternyata : mungkin akan memakan waktu sangat lama (sampai dunia kiamat). Secara teori, diperlukan 2 64-1 perpindahan. Jika kita salah memindahkan, maka jumlah perpindahan akan lebih banyak lagi. Jika satu perpindahan butuh 1 detik, maka total waktu yang dibutuhkan lebih dari 500 juta tahun!!.

Menara Hanoi

Menara Hanoi Untuk memindahkan n piringan dari tiang 1 ke tiang 3: 1. Pindahkan (n-1) piringan dari tiang 1 ke tiang 2 2. Pindahkan 1 piringan (terbesar) dari tiang 1 ke tian 3 3. Pindahkan (n-1) piringan dari tiang 2 ke tiang 3 H(n) : untuk memindahkan n piringan 1. H(n-1) pemindahan 2. 1 pemindahan total ada 2H(n-1) + 1 3. H(n-1) pemindahan

Menara Hanoi Rumus : H(n) = 2 H(n 1) + 1 Algoritma: Jika n==1, pindahkan pringan dari A ke C Jika tidak: Pindahkan n-1 piringan dari A ke B menggunakan C sebagai tampungan Pindahkan n-1 piringan dari B ke C menggunakan A sebagai tampungan

Fungsi rekursif: Contoh: fungsi Fibonacci Basis: fib(0) = 0; fib(1) = 1 Rekursif: fib(n) = fib(n 1) + fib(n 2) Ditulis dengan cara lain: n jika n = 0, 1 fib(n) = fib (n 1) + fib (n 2) jika n > 1

Fungsi yang didefinisikan secara rekursif Langkah-langkah untuk mendefinisikan fungsi dengan domain bilangan cacah: 1. Langkah basis: Definisikan nilai fungsi pada saat nol. 2. Langkah rekursif: Berikan aturan untuk mencari nilai fungsi untuk setiap bilangan bulat berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil. Definisi seperti itu disebut rekursif atau definisi induktif.

Contoh fungsi yang didefinisikan secara rekursif f(0) = 3 f(n + 1) = 2f(n) + 3 Maka f(0) = 3 f(1) = 2f(0) + 3 = 2 3 + 3 = 9 f(2) = 2f(1) + 3 = 2 9 + 3 = 21 f(3) = 2f(2) + 3 = 2 21 + 3 = 45 f(4) = 2f(3) + 3 = 2 45 + 3 = 93

Contoh fungsi yang didefinisikan secara rekursif (2) Bagaimana kita dapat mendefinisikan fungsi faktorial f(n) = n! secara rekursif? f(0) = 1 Karena (n+1)! = n! (n+1) maka f(n + 1) = (n + 1)f(n) f(0) = 1 f(1) = 1 f(0) = 1 1 = 1 f(2) = 2 f(1) = 2 1 = 2 f(3) = 3 f(2) = 3 2 = 6 f(4) = 4 f(3) = 4 6 = 24

Fibonacci Deret Fibonacci adalah suatu deret matematika yang berasal dari penjumlahan dua bilangan sebelumnya. 1, 1, 2, 3, 5, 8, 13, 21, Rumus Fibonacci : f(n) = f(n 1) + f(n 2) f(6) = f(6-1) + f(6-2) 8 = 5 + 3

Bilangan Fibonacci Fungsi lain yang dapat diubah ke bentuk rekursif adalah perhitungan Fibonacci. Bilangan Fibonacci dapat didefinisikan sebagai berikut: f n = f n-1 + f n-2 untuk n > 2 f 1 = 1 f 2 = 1 Berikut ini adalah barisan bilangan Fibonacci mulai dari n=1 1 1 2 3 5 8 13 21 34

Algoritma Fibonacci yang dipakai Function Fibonacci(input n:integer) integer Deklarasi Lokal {tidak ada} Deskripsi If (n ==1 n==2) Then return (l) Else return (Fibonacci(n-1)+Fibonacci(n-2)) Endif

Contoh terkenal: Bilangan Fibonacci f 0 = 0, f 1 = 1 f n = f n-1 + f n-2, n=2,3,4, f 0 = 0 f 1 = 1 f 2 = f 1 + f 0 = 1 + 0 = 1 f 3 = f 2 + f 1 = 1 + 1 = 2 f 4 = f 3 + f 2 = 2 + 1 = 3 f 5 = f 4 + f 3 = 3 + 2 = 5 f 6 = f 5 + f 4 = 5 + 3 = 8 Tunjukkan bahwa untuk n 3, f n < n dengan = (1+ 5)/2.

Himpunan yang didefinisikan secara rekursif Langkah-langkah dalam mendefinisikan suatu himpunan secara rekursif: 1. Langkah basis: Spesifikasi koleksi awal dari anggota 2. Langkah rekursif: Mendefinisikan aturan konstruksi anggota baru dari anggota yang telah diketahui

Contoh himpunan yang didefinisikan secara rekursif Misalkan S didefinisikan secara rekursif oleh: 3 S (x+y) S jika x S dan y S Maka S adalah himpunan bilangan bulat positif yang habis dibagi 3. Bukti: Misalkan A himpunan yang beranggotakan semua bilangan bulat positif yang habis dibagi 3. Untuk membuktikan bahwa A = S, harus ditunjukkan A S and S A. Bagian I: Akan dibuktikan A S, yaitu menunjukkan bahwa setiap bilangan bulat positif yang habis dibagi 3 ada di S (dengan menggunakan induksi matematika).

Contoh himpunan yang didefinisikan secara rekursif (2) Misalkan P(n): proposisi 3n anggota S. 1. Langkah basis: P(1) benar, karena 3 S. 2. Langkah induktif: Asumsikan P(k) benar, yaitu 3k S. Akan ditunjukkan P(k+1) juga benar, yaitu 3(k+1) S Karena 3k S dan 3 S, berdasarkan definisi rekursif dari S, 3k+3 = 3(k+1) juga ada di S. 3. Konklusi: Jadi, setiap bilangan bulat positif yang habis dibagi 3 ada di S. Kesimpulan dari bagian I adalah A S.

Contoh himpunan yang didefinisikan secara rekursif (3) Akan ditunjukkan S A dengan menggunakan definisi rekursif dari S. Langkah basis: Akan ditunjukkan setiap anggota awal S ada di A. Karena 3 habis dibagi 3 maka 3 A. Langkah rekursif: Akan ditunjukkan bahwa setiap bilangan bulat yang dibangun dengan mengunakan langkah rekursif juga merupakan anggota A, yaitu (x+y) A jika x,y S (yang diasumsikan A). Jika x dan y keduanya di A, maka 3 x dan 3 y. Akibatnya, 3 (x + y). Kesimpulan dari bagian II adalah S A. Jadi, secara keseluruhan, berlaku A = S.

Kelebihan dan kelemahan rekursi : Kelebihan solusi sangatlah efisien dapat memecahkan masalah yang sulit dengan tahapan yang mudah dan singkat Kelemahan sulit dipahami perlu stack besar (stack overrun)