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

dokumen-dokumen yang mirip
REKURSIF. Dari bahan Dasar Pemrograman oleh: Arkham Zahri Rakhman Rev.: Fazat Nur Azizah

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

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

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

Design and Analysis Algorithm

Pertemuan 4 Fungsi Rekursif

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

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

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

Struktur Data & Algoritme (Data Structures & Algorithms)

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

Rekursif. Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.

Algoritma Pemrograman

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

ALGORITHM. 3 Rekursif Algorithm. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

Fungsi Rekursif. Bentuk umum fungsi rekursif.

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

Optimasi Perhitungan Bilangan Fibonacci Menggunakan Program Dinamis

Algoritma Pemrograman 2B (Pemrograman C++)

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

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

Algoritma Pemrograman

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

KONSEP DASAR. menyusunnya menjadi potongan-potongan mudah untuk ditangani dibanding. conquer.

Apakah Anda sering kesulitan untuk

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

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

Design and Analysis of Algorithm

BAB II PROSES REKURSI DAN ITERASI

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

Algoritma Pemrograman

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

Rekursif/ Iterasi/ Pengulangan

I Putu Gede Darmawan

Pertemuan 9: BRANCHING/PERCABANGAN dalam C LOOPING/PERULANGAN/ITERASI dalam C

STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

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

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

Penerapan Relasi Rekursif dan Matriks dalam Partisi Bilangan Bulat

Gedung bisa diibaratkan sebagai fungsi main() sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu.

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

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

Pemgrograman Modular. Keuntungan:

Alpro & Strukdat 1 C++ (Sub Program) Dwiny Meidelfi, S.Kom., M.Cs.

A. TUJUAN PEMBELAJARAN

Penerapan Konsep Rekursifitas pada Karya Seni Nesting Dolls

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

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

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

SILABUS MATA KULIAH PEMROGRAMAN JAVA

FUNGSI. tipe Tipe nilai yang dihasilkan oleh fungsi. Jika tidak dinyatakan, hasil fungsi dianggap bilangan bulat (int)

SUB PROGRAM (FUNGSI)

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Fungsi. Fungsi. y = f (x) = x m = jumlah ( a, b ) = a + b

PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024

c. Membeli komputer d. Proses 2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b.

Algoritma. Begin at the beginning and go on /ll you come to the end: then stop. Lewis Caroll, Alice s Adventures in Wonderland, 1865

Fungsi : Dasar Fungsi

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

Setelah mempelajari topik Analisis Algoritma di kuliah SDA, ada beberapa kompetensi yang perlu Anda kuasai:

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

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

5.3 RECURSIVE DEFINITIONS AND STRUCTURAL INDUCTION

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

Design and Analysis of Algorithm

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

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

PROCEDURE DAN FUNCTION

Algoritma & Pemrograman #5

Algoritme dan Pemrograman

Mengenal Subroutine pada Pemrograman C Dian Wirdasari

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

Aplikasi Rekursif dalam Analisis Sintaks Program

Penyelesaian Persoalan Penukaran Uang dengan Program Dinamis

Matriks, Barisan (sequence), Deret (summa)ons)

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

MODUL ALGORITMA DAN PEMROGRAMAN. STMIK AMIKOM Yogyakarta. Rajif Agung Yunmar, S.Kom., M.Cs.

RESUME ALGORITMA MERGE SORT DAN REKURENS

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

Fungsi 2 DASAR PEMROGRAMAN

MODUL. Fungsi (Function) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Dasar Pemrograman. Kondisi dan Perulangan. By : Hendri Sopryadi, S.Kom, M.T.I

Fungsi 1 DASAR PEMROGRAMAN

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM)

Aplikasi Pola Fraktal pada Desain Kain Gringsing Cemplong Tenganan Bali

Penerapan Rekursi dalam Pembuatan Segitiga Sierpinski dengan Menggunakan ActionScript 3

Problem A. Turnamen Panco

5.3 RECURSIVE DEFINITIONS AND STRUCTURAL INDUCTION

BY : DRS. ABD. SALAM, MM

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

PEMROGRAMAN BERORIENTASI OBJEK

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){

Algoritma dan Pemrograman. Loop control structures: WHILE. Loop control structures: WHILE Perhatikan potongan program berikut: 12/29/2011

Penerapan Rekursif dan Analisa Kompleksitas Algoritma Pada Brute Force Login

if (ekspresi_boolean) {

Subprogram (dalam Bahasa C++ + Flowchart)

CCH1A4 / Dasar Algoritma & Pemrogramanan

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

Transkripsi:

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

THE HANDSHAKE PROBLEM Ada n orang di dalam sebuah ruangan. Jika masing-masing orang harus bersalaman dengan setiap orang lainnya, ada berapa handshakes h(n) yang terjadi? Bagaimana cara memecahkan persoalan ini? 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 2

1 kali salaman + 2 kali salaman + 3 kali salaman 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 3

H(2) = 1 H(3) = H(2) + 2 H(4) = H(3) + 3 H(n) =? 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 H(n) = H(n-1)+n-1 4

h(n) = h(n-1) + n-1 h(4) = h(3) + 3 h(3) = h(2) + 2 Kasus basis: h(2) = 1 h(n) => Sum dari integer mulai 1 hingga n-1 = n(n-1) / 2 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 5

Recursion is all about breaking a big problem into smaller occurrences of that same problem. 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 6

REKURSIFITAS Definisi: Suatu entitas disebut rekursif jika pada definisinya terkandung terminologi dirinya sendiri 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 7

CONTOH GAMBAR REKURSIF 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 8

2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 9

2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 10

2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 11

APLIKASI REKURSIFITAS DALAM BIDANG INFORMATIKA Fraktal: bentuk-bentuk geometris yang terdiri atas bagian-bagian kecil, tiap bagian adalah kopi (dalam ukuran yang lebih kecil) dari bentuk keseluruhan Biasanya diimplementasikan dari fungsi matematis yang bersifat rekursif 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 12

CONTOH-CONTOH GAMBAR FRAKTAL 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 13

REKURSIF Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur tidak bisa diimplementasikan sebagai program utama Terdiri atas: suatu kondisi untuk berhenti (BASIS) Kondisi untuk proses rekursif memanggil diri sendiri (REKURENS) Definisi menurut Niclaus Wirth : An object is said be recursive if it partially consist or is defines in terms of itself

ANALISIS REKURENS Solusi rekursif terdiri dari dua bagian: Basis, kasus yang menyebabkan fungsi berhenti, karena jawaban sudah bisa diperoleh Bagian rekurens : mengandung call terhadap fungsi tersebut (aplikasi dari fungsi), dengan parameter bernilai mengecil (menuju basis). Solusi rekursif memiliki sekurang-kurangnya satu kasus basis dan satu kasus rekursif. Dimungkinkan ada lebih dari satu kasus basis maupun rekursif. 2/18/2018 IF1210 DASAR PEMROGRAMAN/SEM. II 2016/2017 15

FAKTORIAL Fungsi faktorial dari bilangan bulat positif n didefinisikan sebagai berikut: n!= n.(n-1)!, jika n>1 n!= 1, jika n=0, 1 contoh : 3!= 3. 2! 3!= 3. 2. 1! 3!= 3. 2. 1 3!= 6

FAKTORIAL Konsep Faktorial n! = n(n-1)(n-2) 1 Dapat diselesaikan dengan Cara Biasa (secara iteratif, dengan pengulangan) Rekursif

FAKTORIAL : CARA ITERATIF (DENGAN PENGULANGAN) int Faktorial(int n) // Menghasilkan faktorial n (n!). Asumsi n >= 0 { int S, i; S = 1; i = 1; while (i <= n) { S = S * n ; i++; } // i > N return S; }

FAKTORIAL : DENGAN REKURSIF Basis jika n = 0, maka n! = 1 Rekurens jika n > 0, maka n! = n * (n-1) * (n-2) * * 1 = n * (n-1)! Contoh: 0! = 1 1! = 1 * 0! = 1 * 1 = 1 5! = 5 * 4! = 120 (n 1)!

FAKTORIAL : DENGAN REKURSIF int Faktorial(int n) // Menghasilkan faktorial n, asumsi n >= 0, dengan cara rekursif { if (n == 0) { // Basis return 1; } else { // n > 0; Rekurens return (n * Faktorial(n-1)); } }

DERET FIBONACCI Diciptakan oleh Leonardo Fibonacci berasal dari Italia 1170-1250 Deret Fibonacci f 1, f 2, didefinisikan secara rekursif sebagai berikut : f 1 = 1 f 2 = 1 f n = f n-1 + f n-2 untuk n > 2 Deret: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,

CONTOH Untuk n = 4, proses perhitungan Fibonacci dapat dilakukan sebagai berikut: f 4 = f 3 +f 2 f 4 = (f 2 +f 1 ) + f 2 f 4 = (1+1) +1 f 4 = 3

CONTOH Untuk n = 6, proses perhitungan Fibonacci dapat dilakukan sebagai berikut: f 6 = f 5 + f 4 f 6 = (f 4 + f 3 ) + (f 3 + f 2 ) f 6 = ((f 3 +f 2 )+(f 2 +f 1 )) + ((f 2 +f 1 )+ f 2 ) f 6 = (((f 2 +f 1 )+f 2 )+(f 2 +f 1 )) + ((f 2 +f 1 )+ f 2 ) f 6 = (((1+ 1)+1) +(1+1)) + ((1+1) + 1 ) f 6 = (( 2 +1) + 2 ) + ( 2 + 1 ) f 6 = ( 3 + 2 ) + 3 f 6 = 5 + 3 f 6 = 8

DERET FIBONACCI Basis n = 1, f(n) = 1 n = 2, f(n) = 1 Rekurens n > 2, f(n) = f(n-1) + f(n-2)

DERET FIBONACCI (VERSI FUNGSI) int Fib (int n) // Menghasilkan deret fibonacci pada suku ke-n { if (n == 1) { // Basis-1 return 1; } else if (n == 2) { // Basis-2 return 1; } else { // n > 2, rekurens return (Fib(n-1) + Fib(n-2)); } }

DERET FIBONACCI (VERSI PROSEDUR) void PFib (int n, int *F) // I.S. n adalah suku deret fibonacci, terdefinisi // F.S. F berisi nilai deret fibonacci pada suku ke-n { int F1, F2; } if (n == 1) { // Basis-1 *F = 1; } else if (n == 2) { // Basis-2 *F = 1; } else { // n > 2, rekurens PFib(n-1, &F1); PFib(n-2, &F2); *F = F1 + F2; }

KESIMPULAN Fungsi rekursif merupakan fungsi yang memanggil dirinya sendiri. Terdapat dua komponen penting dalam fungsi rekursif, yaitu kondisi kapan berhentinya fungsi (BASIS) dan pengurangan atau pembagian data ketika fungsi memanggil dirinya sendiri (REKURENS).

LATIHAN 1. Buatlah program yang menerima masukan n (asumsikan n >= 0) dari input user dan menampilkan faktorial n. Gunakan fungsi faktorial yang dikerjakan dengan cara rekursif. 2. Buat program yang menerima masukan sebuah integer n dan menuliskan ke layar: 1+2+3+4+5+...+n jika n > 0. Jika n <= 0, tuliskan: Tidak dapat dihitung. Program ini harus mengandung fungsi yang menerima masukan n (asumsi n > 0) dan menghasilkan: 1+2+3+4+5+...+n dengan menggunakan cara rekursif. 3. Buat fungsi yang menerima masukan n (integer > 0) dan menghasilkan: 2+4+6+8+10+...+(2*n) menggunakan cara rekursif.