Rekursi (Recursion) Fungsi rekursi adalah fungsi yang didalam function body- nya ada statement yang memanggil dirinya sendiri. Fungsi rekursif, sangat.

Slides:



Advertisements
Presentasi serupa
REKURSIF.
Advertisements

soal Advanced class Fertures
ARRAY SATU DIMENSI Minggu VI.
Algoritma dan Struktur Data
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).
Algoritma dan Struktur Data Daniel Riano Kaparang.
Rekursif Yuliana Setiowati.
Desain dan Analisis Algoritma
REKURSIF Matakuliah : T0974 / Algoritma dan Metode Object Oriented Programming I Tahun : 2008 Versi : 1/0.
Pemrograman Terstruktur
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.
INSTRUKSI MASUKAN DAN KELUARAN
STRUKTUR DATA recursive function.
Function(2).
Operasi pada pohon biner
Penelusuran Bab 7 Pohon Biner 219.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Algorithm and Data Structures.
Algoritma dan Struktur Data
Design and Analysis Algorithm
Algoritma dan Struktur Data
Statement Input – Output
Bab 05 Tipe Data dan Mengisi Variabel
Array, POINTER dan FUNGSI
1 Pertemuan Fungsi Matakuliah: T0016 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6.
1 Latihan Pertemuan String Matakuliah: T0616 / Algoritma dan Pemrograman Tahun: 2007 Versi: 1/0.
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.
Universitas Budi Luhur
DIG1G3 Implementasi Struktur Data
Elemen Dasar C Identifier :
Struktur Program TEE 2103 Algoritma dan Pemrograman
Algoritma rekursif dan relasi rekurensi
Algoritme dan Pemrograman
Fungsi.
REKURSIF Learning Outcomes Pada akhir pertemuan ini, mahasiswa mampu:
Ucu Nugraha, ST. Algoritma.
Mata kuliah :K0362/ Matematika Diskrit Tahun :2008
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
Algoritma dan Struktur Data
Algoritma dan Struktur Data 1 pertemuan 10
Algoritma dan Pemrograman Subrutin (Function)
FUNGSI.
~ PERTEMUAN 8 STRUKTUR REKURSIF ~
TEL 2112 Dasar Komputer & Pemograman Fungsi
Recursive function.
STRUKTUR DATA (10) recursive function
PART 7 TEKNIK REKURSIF DOSEN : AHMAD APANDI, ST.
Algoritma Rekursif.
Modul 4 : Analisis Algoritma & Struktur Data
Algoritma Rekursif Alpro-2.
Analisa algoritma rekursif
Nested if 164.
Bab 10 Fungsi.
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
Transcript presentasi:

Rekursi (Recursion) Fungsi rekursi adalah fungsi yang didalam function body- nya ada statement yang memanggil dirinya sendiri. Fungsi rekursif, sangat berguna dalam pemecahan masalah jika masalah tadi dapat didefinisikan secara rekursif pula. Contoh : Faktorial (n) atau n! didefinisikan sebagai berikut : n! = 1, untuk n = 0; n! = n * (n-1)!, untuk n > 0 4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1* 0! 0! = 1 Bila ditelusur mundur : 4! = 1*2*3*4 = 24

Iteratif vs Rekursif: Contoh persoalan : Masukan : ARABIKA. Keluaran : AKIBARA Algoritma dengan cara iteratif : Masukan huruf dari keyboard. Simpan huruf pada struktur array. Ulangi 1 dan 2, hingga kata/kalimat selesai. Ambil huruf dari array, dengan urutan terbalik, yaitu dari indeks terbesar ke indeks terkecil. 5. Tampilkan huruf di layar monitor. 6. Ulangi 4 dan 5, hingga semua huruf ditampilkan.

/* Program Tulis_Mundur secara Iteratif */ #include <stdio.h> void Baca(char *ptr, int *Y) { int k=0; char ch; ch = getche(); while(ch != ‘.’) { /*‘.’ tanda akhir kata */ ptr[k]=ch; k++; ch=getche(); } k--; *Y=k; void Tulis(char *ptr, int n) int i; for (i=n; i>=0; i--) printf(“%c”,ptr[i]); printf(“\n”);

void main() { /* Program Utama */ char A[80]; int n; Baca(A,&n); Tulis(A,n); } /* Program Tulis_Mundur secara Rekursif */ #include <stdio.h> void Mundur() { char ch ; ch=getche(); if (ch != ‘.’) Mundur(); if (ch != ‘.’) printf(“%c”,ch); void main() { / *Program Utama */ Mundur();

Mekanisme Pemanggilan Fungsi secara Rekursif sbb: Main() { Mundur(); } void mundur(){ char ch; ch=getche(); if(ch != ‘.’) Mundur(); if(ch != ‘.’) printf(“%c”,ch); } void mundur(){ char ch; ch=getche(); if(ch != ‘.’) Mundur(); if(ch != ‘.’) printf(“%c”,ch); } void mundur(){ char ch; ch=getche(); if(ch != ‘.’) Mundur(); if(ch != ‘.’) printf(“%c”,ch); } Meskipun penulisan program dengan cara rekursif bisa lebih pendek, namun procedure atau function rekursif memerlukan : Memori yang lebih banyak, karena perlu tambahan untuk ‘Activation Record Stack’. Waktu lebih lama, karena perlu menjejaki setiap pemanggilan rekursif melalui ‘Activation Record’. Secara umum, gunakan penyelesaian secara rekursif, hanya jika : Penyelesaian sulit dilaksanakan secara iteratif

Efisiensi dengan cara rekursif sudah memadai Efisiensi bukan masalah dibandingkan dengan kejelasan logika program Pemborosan (Redundancy) dapat terjadi dalam penyele- saian masalah secara rekursif. Contoh klasik : Bilangan Fibonacci : Fib(n) = n, bila n = 0 atau n = 1 Fib(n) = Fib(n-2) +Fib(n-1), bila n  2 int Fib(int n) { int k; if (n == 0) k= 0; else if (n == 1) k=1; else k=Fib(n-2) + Fib(n-1); return(k); }

Skema Pemanggilan Fib(4) Menara Hanoi Masalah : Memindahkan n-piringan dari pilar-kiri ke pilar-kanan dengan pilar-tengah sebagai antara. Piringan yang berada dipilar kiri tersusun sedemikian rupa sehingga menyerupai menara, yaitu piringan yang lebih kecil selalu berada diatas piringan yang lebih besar. Pada proses pemindahan piringan-piringan tersebut, pola susunan menara harus selalu dijaga.

Ilustrasi Menara Hanoi: 1 2 3 4 Pilar Kiri Pilar Kanan Tengah Algoritma dengan teknik Working-Backward : 1. Pindahkan (n-1) piringan-piringan atas ke pilar antara. 2. Pindahkan piringan terakhir ke pilar tujuan 3. Ulangi 2 dan 3, hingga selesai.

Disebut teknik Working-Backward, karena berjalan mundur dahulu, yaitu : Untuk memindahkan n piringan, pikirkan dahulu cara memindahkan (n-1) piringan. Ulangi langkah 2 untuk (n-1),(n-2),... Pindahkan 1 piringan, yaitu piringan terakhir. Dalam pemecahan Menara Hanoi ini, tersirat pemecahan dengan teknik Sub-Goal ! Contoh penggunaan Cara Rekursif pada masalah Menara Hanoi.

Menara (int N, char Awal, char Akhir, char Antara) { If (N==1) printf (“Pindahkan 1 dari : %c ke %c\n”,Awal,Akhir); else { Menara (N-1,Awal,Antara,Akhir); printf (”Pindahkan %d dari %c ke %c\n”, N, Awal, Akhir); Menara(N-1, Antara, Akhir, Awal); } void main() int N; printf (”Banyak Piringan ? ”); scanf(“%d”,&N); Menara(N,’L’,’R’,’M’); /*Left, Right, Middle*/