Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Rekursif. Soal Buatlah sebuah program untuk menghitung jumlah kuadrat dari selang yang sudah ditentukan! Input : sumsquare(5, 10) Output : 25 + 36 + 49.

Presentasi serupa


Presentasi berjudul: "Rekursif. Soal Buatlah sebuah program untuk menghitung jumlah kuadrat dari selang yang sudah ditentukan! Input : sumsquare(5, 10) Output : 25 + 36 + 49."— Transcript presentasi:

1 Rekursif

2 Soal Buatlah sebuah program untuk menghitung jumlah kuadrat dari selang yang sudah ditentukan! Input : sumsquare(5, 10) Output : = 355

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

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

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

6 Why Rekursif? 1.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 2.Konsep formalisasi (bentuk umum atau rumus umum) sumsquare(x,y)  jika x=y selainnya sumsquare(x, sumsquare(x+1,y)) 3.algoritma menjadi lebih singkat

7 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.

8 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

9 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.

10 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 + ( ))))) = (25 + (36 + (49 + ( )))) = (25 + (36 + ( ))) = (25 + ( )) = ( ) = 355

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

12 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); }

13 Iteratif VS Rekursif

14 Latihan 1.Buatlah sebuah fungsi rekursif untuk mencetak n bilangan. 2.Buatlah sebuah fungsi rekursif yang outputnya adalah jumlah digit dari sebuah bilangan 3.Buat program untuk menghitung deret S = n menggunakan function rekursi 4.Buat program untuk menghitung deret S = n menggunakan function rekursi int sumOfDigits(int x); Misalnya: jika x adalah 234, fungsi harus mengembalikan , 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

15 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”); Else { printf(“n”); cetak(n-1); }


Download ppt "Rekursif. Soal Buatlah sebuah program untuk menghitung jumlah kuadrat dari selang yang sudah ditentukan! Input : sumsquare(5, 10) Output : 25 + 36 + 49."

Presentasi serupa


Iklan oleh Google