A. TUJUAN PEMBELAJARAN

dokumen-dokumen yang mirip
A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

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

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

Berbagai Solusi Pemecahan Masalah Tower of Hanoi dan Representasi Grafnya

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

Algoritma Pemrograman

Algoritma Pemrograman

Fungsi Rekursif. Bentuk umum fungsi rekursif.

Algoritma Pemrograman

BAB II PROSES REKURSI DAN ITERASI

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

BAB V Tujuan 5.1 Rekursi Dasar

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

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

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

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

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

Design and Analysis Algorithm

Perulangan Rekursif dan Perulangan Iteratif

I Putu Gede Darmawan

Design and Analysis of Algorithm

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

PERTEMUAN 7 REVIEW (QUIZ)

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

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

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

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

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

BAB 6. FUNGSI. Tujuan penggunaan fungsi : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode program.

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

PEMROGRAMAN BERORIENTASI OBJEK

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

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

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

Program menjadi terstruktur Dapat mengurangi pengulangan kode program. Fungsi dapat diimplementasikan dalam tiga bentuk :

Pertemuan 4 Fungsi Rekursif

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

Algoritme dan Pemrograman

Fungsi 1 DASAR PEMROGRAMAN

Catatan Kuliah STRUKTUR DATA BAB III REKURSIF

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

Apakah Anda sering kesulitan untuk

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

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

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Algoritma & Pemrograman #7. by antonius rachmat c, s.kom, m.cs

Algoritma Pemrograman 2B (Pemrograman C++)

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Spesifikasi: Ukuran: 14x21 cm Tebal: 225 hlm Harga: Rp Terbit pertama: Februari 2005 Sinopsis singkat:

ALGORITMA (2) Mengupas Kentang

Kisi- kisi UTS- P. Kisi- kisi UTS- T

Rekursif/ Iterasi/ Pengulangan

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

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

Pertemuan 4 Diagram Alur / Flowchart

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

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

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

Bab 4. Koefisien Binomial

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

Solusi Rekursif pada Persoalan Menara Hanoi

BAB V PERULANGAN. for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah )

Problem A. Turnamen Panco

# SEVEN PROCUDURE & FUNCTION

Praktikum 5 PERULANGAN PROSES

BAB V FUNGSI Tujuan : 5.1 Dasar Fungsi

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

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

Pemgrograman Modular. Keuntungan:

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

A. TUJUAN PEMBELAJARAN

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

Dasar Komputer & Pemrograman 2A

Fungsi : Dasar Fungsi

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

Praktikum 3 DASAR-DASAR PEMROGRAMAN C

Praktikum 4 PENGULANGAN PROSES

PRAKTIKUM 7 FUNGSI 1

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK AMIKOM YOGYAKARTA

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

Fungsi, Parameter, Rekursi

1 MODUL 5 MODUL 5 PERULANGAN

Array 1 A. TUJUAN PEMBELAJARAN

Algoritma & Pemrograman #5

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

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

KONTROL ALIR PERULANGAN

MODUL 4 PERULANGAN A. TUJUAN

A. TUJUAN PEMBELAJARAN

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

Single Linked List (2)

Pengertian Fungsi bagian dari program mengerjakan suatu tugas letaknya terpisah dari program yang memanggilnya

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

Konsep Pemrograman Praktikum 14 Fungsi : Parameter Fromal & Aktual

RESUME ALGORITMA MERGE SORT DAN REKURENS

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

Permutasi dan Kombinasi Peluang Diskrit

A. TUJUAN PEMBELAJARAN

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

Transkripsi:

Praktikum 9 Rekusif A. TUJUAN PEMBELAJARAN Setelah melakukan praktikum dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif B. DASAR TEORI Rekursif berarti bahwa suatu proses bisa memanggil dirinya sendiri. Rekursif adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif sebenarnya terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat pemanggil prosedur dan fungsi. Rekursif merupakan teknik pemrograman yang penting dan beberapa bahasa pemrograman mendukung keberadaan proses rekursif ini. Dalam prosedur dan fungsi, pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan akan berakhir. Contoh paling sederhana dari proses rekursif ini adalah proses menghitung nilai faktorial dari suatu bilangan bulat positif dan mencari deret Fibbonacci dari suatu bilangan bulat. 1. Nilai faktorial secara rekursif dapat ditulis sebagai 0! = 1 N! = N x (N-1)! yang secara pemrograman dapat ditulis sebagai Faktorial(0) = 1 (1) Faktorial(N) = N*Faktorial(N-1) (2) Algoritma dan Struktur Data 87

Persamaan (2) di atas adalah contoh hubungan rekurens (recurrence relation), yang berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan argumen yang lebih kecil. Persamaan (1) tidak bersifat rekursif, disebut nilai awal atau basis. Setiap fungsi rekursif paling sedikit mempunyai satu nilai awal, jika tidak fungsi tersebut tidak bisa dihitung secara eksplisit. 2. Bilangan Fibbonacci didefinisikan sebagai berikut 1 1 2 3 5 8 13 21 34 55 89 dari barisan tersebut dapat dilihat bahwa bilangan ke-n (N>2) dalam barisan dapat dicari dari dua bilangan sebelumnya yang terdekat dengan bilangan N, yaitu bilangan ke-(n-1) dan bilangan ke-(n-2), sehingga dapat dirumuskan sebagai rekurensnya Fibbonacci(1) = 1 (1) Fibbonacci(2) = 1 (2) Fibbonacci(N) = Fibbonacci(N-1) + Fibbonacci(N-2) (3) Dengan persamaan (1) dan (2) adalah basis dan persamaan (3) adalah Dalam beberapa situasi, pemecahan secara rekursif maupun secara iteratif mempunyai keuntungan dan kekurangan yang bisa saling diperbandingkan. Adalah cukup sulit untuk menentukan mana yang paling sederhana, paling jelas, paling efisien dan paling mudah disbanding yang lain. Boleh dikatakan pemilihan cara iterative maupun rekursif merupakan kesenangan seorang programmer dan tergantung konteks permasalahan yang akan dipecahkan sesuai dengan kesanggupan yang bersangkutan. Prosedur Dan Fungsi Rekursif Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah : 1. meningkatkan readibility, yaitu mempermudah pembacaan program 2. meningkatkan modularity, yaitu memecah sesuatu yang besar menjadi modulmodul atau bagian-bagian yang lebih kecil sesuai dengan fungsinya, sehingga mempermudah pengecekan, testing dan lokalisasi kesalahan. Algoritma dan Struktur Data 88

3. meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali dengan hanya memanggil sub program tersebut tanpa menuliskan perintahperintah yang semestinya diulang-ulang. Sub Program Rekursif adalah sub program yang memanggil dirinya sendiri selama kondisi pemanggilan dipenuhi. Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki : 1. kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus atau special condition) 2. pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi) Secara umum bentuk dari sub program rekursif memiliki statemen kondisional : if kondisi khusus tak dipenuhi then panggil diri-sendiri dengan parameter yang sesuai lakukan instruksi yang akan dieksekusi bila kondisi khusus dipenuhi Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori, waktu eksekusi sub program) sub program rekursif sering bersifat tidak efisien. Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya dalam algoritma pengurutan dan pencarian). C. TUGAS PENDAHULUAN Jawablah pertanyaan berikut ini : 1. Apa yang dimaksud dengan rekursi? 2. Tuliskan fungsi untuk menghitung nilai faktorial 3. Tuliskan fungsi untuk menampilkan nilai fibonanci dari deret fibonanci 4. Tuliskan fungsi untuk menentukan sebuah bilangan apakah termasuk bilangan prima atau bukan prima Algoritma dan Struktur Data 89

D. PERCOBAAN Percobaan 1 : Fungsi rekursif untuk menghitung nilai faktorial int faktorial(int x) if(x==1) return x; return x * faktorial(x-1); int N; printf("masukkan N = "); scanf("%d", &N); printf("hasil %d! = %d\n", N, faktorial(n)); Percobaan 2 : Fungsi menghitung nilai faktorial dengan rekursi tail int faktorial(int x, int a) if(x==1) return a; return faktorial(x-1,x*a); int N; printf("masukkan N = "); scanf("%d", &N); printf("hasil %d! = %d\n", N, faktorial(n,1)); Percobaan 3 : Fungsi rekursi untuk menampilkan deret fibonanci int fibo(int x) if (x<=0 x<=1) return x ; return fibo(x-2) + fibo(x-1); int n; printf("masukkan jumlah deret = "); Algoritma dan Struktur Data 90

scanf("%d", &n); printf("deret fibonanci dari %d = ", n); for(int i=0;i<n;i++) printf("%d ", fibo(i)); Percobaan 4 : Fungsi rekursi untuk menentukan bilangan prima atau bukan prima #include<math.h> int prime(int number, int index) if(index == 1) return 1; if(number % index == 0) return 0; return prime(number, --index); int num; printf("masukkan bilangan sampai dengan : "); scanf("%d", &num); printf("deret bilangan prima : "); for(int i=1;i<=num;i++) if(prime(i,(int)sqrt(i))) printf("%d ", i); Percobaan 5 : Fungsi rekursi untuk menghitung pangkat int pangkat(int x, int y) if(y==0) return 1; return x * pangkat(x,y-1); int x, y; printf("bilangan x pangkat y : "); scanf ("%d %d", &x, &y); printf("%d pangkat %d = %d\n", x, y, pangkat(x,y)); Algoritma dan Struktur Data 91

E. LATIHAN 1. Buatlah program rekursif untuk menghitung segitiga Pascal! F1 1 F2 1 1 F3 1 2 1 F4 1 3 3 1 F5 1 4 6 4 1 F6 1 5 10 10 5 1 2. Buatlah program secara rekursif, masukkan jumlah N karakter dan cetak dalam semua kombinasi! Jumlah karakter = 3 aaa aab aac aba abb abc aca acb acc baa bab bac bba bbb bbc bca bcb bcc caa cab cac cba cbb cbc cca ccb ccc BUILD SUCCESSFUL (total time: 1 second) 3. Buat program BinarySearch dengan Rekursif! (data tentukan sendiri) Data : 2,5,8,10,14,32, 35, 41, 67, 88, 90, 101, 109 Data yang dicari : 10 Data 10 berada pada indek ke 3 4. Buatlah program rekursif untuk memecahkan permasalahan Menara Hanoi! Program ini merupakan program untuk menampilkan pergerakkan menara hanoi, yang merujuk pada class menarahanoi. Secara umum algoritma menara hanoi, adalah memindahkan sub menara hanoi dengan n 1 pin dari n pin ke tiang perantara. Lalu memindahkan pin ke n ke tiang tujuan, lalu memindahkan sub menara hanoi dengan n 1 pin yang ada di tiang perantara, ke tiang tujuan. StopCase nya jika n == 1. Jumlah disk : 3 Langkah-langkah nya adalah dengan : 1. Pindahkan disc 1 dari pasak A ke pasak C 2. Pindahkan disc 2 dari pasak A ke pasak B Algoritma dan Struktur Data 92

3. Pindahkan disc 1 dari pasak C ke pasak B 4. Pindahkan disc 3 dari pasak A ke pasak C 5. Pindahkan disc 1 dari pasak B ke pasak A 6. Pindahkan disc 2 dari pasak B ke pasak C 7. Pindahkan disc 1 dari pasak A ke pasak C F. LAPORAN RESMI 1. Kerjakan hasil percobaan(d) dan latihan(e) di atas dan tambahkan analisa. 2. Tuliskan kesimpulan dari percobaan dan latihan yang telah anda lakukan. Algoritma dan Struktur Data 93