Rekursif.

Slides:



Advertisements
Presentasi serupa
CONSIDERING EXTREME CASES (Mempertimbangkan Kasus Ekstrim)
Advertisements

Stack, Larik dan Pointer
ARRAY.
TURUNAN/ DIFERENSIAL.
Soal Evaluasi Mulai Soal terdiri atas 10 nomor
Mata Kuliah: Bahasa C++ Harni Kusniyati
SERBA SERBI PHYTAGORAS
Lingkup Variabel Kelas Penyimpanan Rekursi
TEKNIK REGRESI BERGANDA
PERPANGKATAN DUA DAN TIGA SUATU BILANGAN
Kasus 1 Buat algoritma untuk menghitung gaji pegawai. Gaji pegawai didapat dari gaji pokok ditambah tunjangan keluarga dan tunjangan jabatan. Tunjangan.
MELAKUKAN OPERASI HITUNG BILANGAN BULAT DALAM PEMECAHAN MASALAH
PENGANTAR KOMPUTER & TI 1A
Minggu V Gerlan A. Manu, ST.,MKom - Algoritma Pemrograman I 1.
ALGORITMA ERIK HADI SAPUTRA.
Soal-2. Susun program untuk menginput empat (4) buah bilangan bulat kemudian mencetak salah satu bilangan yang nilainya terbesar: 180.
Logaritma dengan basis 10
Dalam Perhitungan matematika dalam kehidupan sehari-hari, suatu masalah kadang-kadang dapat diterjemahkan dalam model matematika yang berbentuk pertidaksamaan.
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
BANGUN RUANG L I M A S K E R U C U T.
Jurusan Teknik Informatika Universitas Ahmad Dahlan 2004
WEEK 6 Teknik Elektro – UIN SGD Bandung PERULANGAN - LOOPING.
LINGKARAN.
Tipe Data Bentukan Pertemuan ke-5.
PERSAMAAN BEDA Sistem Rekursif dan Nonrekursif
TURUNAN DIFERENSIAL Pertemuan ke
Pointer dan Reference (Bab 6).
GARIS SINGGUNG LINGKARAN OLEH: SULISTYANA, S.Pd SMP N 1 WONOSARI.
POLA BILANGAN.
SEARCHING ( PENCARIAN )
REGRESI DAN KORELASI SEDERHANA
Looping (perulangan) As’ad Djamalilleil
Operasi Hitung Campuran Bilangan Bulat
Algoritma dan Dasar Pemograman
BILANGAN PECAHAN.
Variabel dan Ekspresi Struktur Percabangan dan Struktur Perulangan
Rekursif Yuliana Setiowati.
STRUKTUR DATA (3) sorting array
PENGANTAR ALGORITMA DAN PEMROGRAMAN
ARRAY Dr. Lily Wulandari.
TEOREMA PYTHAGORAS.
Pemrograman JAVA (TIB09)
Array Pertemuan ke 11..
Pemrograman Terstruktur
HUBUNGAN ANTARA GARIS LURUS DAN PARABOLA
SOAL 1 Jika fungsi permintaan suatu produk adalah : P = 36 – 4Q
OLEH Fattaku Rohman,S.PD
Algoritma dan Struktur Data
Function(2).
OPERASI pada bentuk ALJABAR
ARRAY 2 DIMENSI (MATRIK)
PENDALAMAN LOOP DAN LOGIKA
Mathematics for Business & Economics Atman P, drs. STIE INDONESIA BANKING SCHOOL
%Program Hebb AND Hasil (Contoh Soal 1.5)
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Kasus Buat algoritma untuk menghitung total pembayaran dari proses pembelian.
PEMROGRAMAN SISTEM PERNYATAAN DASAR FUNGSI Pertemuan VI
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
STRUKTUR LOOPING Castaka Agus Suginto, M.Kom., M.CS.
FUNGSI REKURSIF Pertemuan 8 ASWAR R..
Array Buat algoritma untuk mencari nilai terbesar dari 5 nilai mahasiswa yang diinputkan dengan array.
Soal-soal Pengulangan
mencetak Total kedua bilangan tersebut
Data Structure + Algorithm = Program
Algoritma Rekursif Alpro-2.
A. Sistem Persamaan Linier dan Kuadrat
A. Menyelesaikan Persamaan Kuadrat
Peta Konsep. Peta Konsep A. Sistem Persamaan Linier dan Kuadrat.
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
Transcript presentasi:

Rekursif

Soal Buatlah sebuah program untuk menghitung jumlah kuadrat dari selang yang sudah ditentukan! Input : sumsquare(5, 10) Output : 25 + 36 + 49 + 64 + 81 + 100 = 355

Menggunakan Iterasi sumsquare (int x, int y ) { int i,jum; jum = 0; for (i = x; i<=y;i++){ jum := jum + sqr(i); } printf(jum); };

Sumsquare (5, 10) for i = 5 jum := 0 + sqr(5); for (i = x ; i<= y;i++) { jum := jum + sqr(i); } for (i = 5 ; i<= 10;i++) { jum := jum + sqr(i); } Penyelesaian dengan menggunakan pendekatan iteratif for i = 5 jum := 0 + sqr(5); for i = 6 jum := 25 + sqr(6); for i = 7 jum := 25 + 36 + sqr(7); for i = 8 jum := 25 + 36 + 49 + sqr(8); for i = 9 jum := 25 + 36 + 49 + 64 + sqr(9); for i = 10 jum := 25 + 36 + 49 + 64 + 81 + sqr(10); Atau dapat ditulis: Sqr(5+0)+Sqr(5+1)+Sqr(5+2)+Sqr(5+3)+Sqr(5+4)+Sqr(5+5)

Rekursif Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi tersebut dipanggil di dalam dirinya sendiri

Why Rekursif? terdapat suatu sub masalah yang memiliki karakteristik yang mirip/sama masing-masing tahap melakukan algoritma melakukan proses yang sama, perbedaan hanya pada nilai parameter yang masuk Konsep formalisasi (bentuk umum atau rumus umum) sumsquare(x,y)  jika x=y selainnya sumsquare(x, sumsquare(x+1,y)) algoritma menjadi lebih singkat

Algoritma Rekursif Ciri masalah yang dapat diselesaikan secara rekursif adalah masalah itu dapat di-reduksi menjadi satu atau lebih masalah-masalah serupa yang lebih kecil Secara umum, algoritme rekursif selalu mengandung dua macam kasus: kasus induksi: satu atau lebih kasus yang pemecahan masalahnya dilakukan dengan menyelesaikan masalah serupa yang lebih sederhana (yaitu menggunakan recursive calls) kasus dasar atau kasus penyetop: satu atau lebih kasus yang sudah sederhana sehingga pemecahan masalahnya tidak perlu lagi menggunakan recursive-calls. Supaya tidak terjadi rekursi yang tak berhingga,setiap langkah rekursif haruslah mengarah ke kasus penyetop.

Bagaimana Bekerjanya? Ketika sebuah metode rekursif dipanggil S(n) maka aksi ini akan di push ke stack di register Demikian pula Ketika S(n) memanggil S(n-1) Hingga S(k) yang merupakan komponen penyetop dipanggil maka barulah isi stack di pop

Kekurangan Overhead cost lebih besar. Hal ini karena adanya penggunaan stack di memory. Algoritma rekursif relatif lebih sulit untuk menelusurinya. Adanya kemungkinan inefisiensi terselubung, sehingga program lebih lambat.

Pola Pada Sumsquare sumsquare(5,10) = (25 + sumsquare(6,10)) = (25 + (36 + sumsquare(7,10))) = (25 + (36 + (49 + sumsquare(8,10)))) = (25 + (36 + (49 + (64 + (sumsquare(9,10))))) = (25 + (36 + (49 + (64 + (81 + (sumsquare(10,10)))))) = (25 + (36 + (49 + (64 + (81 + 100))))) = (25 + (36 + (49 + (64 + 181)))) = (25 + (36 + (49 + 245))) = (25 + (36 + 294)) = (25 + 330) = 355

Call Tree Sumsquare 10*10 sumsquare(5,10) 5*5 sumsquare(6,10) 6*6 7*7 sumsquare(8,10) 8*8 sumsquare(9,10) 9*9 sumsquare(10,10) +

Lakukan Penelusuran pada Prosedur Hapus berikut: void hapus (simpul head){ simpul p,t; p = head; while (p!=NULL) { t = p; p = pberikut; delete(t); } void hapus (simpul head) { p=head; while (p!=NULL) { hapus(headberikut); delete(head); }

Iteratif VS Rekursif

Latihan Buatlah sebuah fungsi rekursif untuk mencetak n bilangan. Buatlah sebuah fungsi rekursif yang outputnya adalah jumlah digit dari sebuah bilangan Buat program untuk menghitung deret S = 1+2+3+4+5+...+n menggunakan function rekursi Buat program untuk menghitung deret S = 2+4+6+8+10+...+2n menggunakan function rekursi int sumOfDigits(int x); Misalnya: jika x adalah 234, fungsi harus mengembalikan 2 + 3 + 4, yaitu 9. jika x adalah 12, fungsi harus mengembalikan 1 + 2, yaitu 3. jika x adalah 39, fungsi harus mengembalikan12. Petunjuk: Gunakan operator / dan % untuk memudahkan perhitungan

int sumofdigit(int x) { If (x between 0 dan 9) return x; Else return x%10 + sumofdigit(x/10); } void cetak(n) If (n==0) Printf(“0”); printf(“n”); cetak(n-1);