4rekursi-121220005009-phpapp01

13
wilis k - IFUPN"V"Yk REKURSIF Algoritma dan Pemrograman II Wilis Kaswidjanti Informatika UPN “Veteran” Yk 2007

Upload: imelda-roza

Post on 08-Feb-2016

5 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

REKURSIFAlgoritma dan Pemrograman II

Wilis KaswidjantiInformatika UPN “Veteran” Yk

2007

Page 2: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

REKURSIF

• Rekursif merupakan alat/cara untuk memecahkan masalah dalam suatu fungsi atau procedure yang memanggil dirinya sendiri.

• Definisi menurut Niclaus Wirth :“ An object is said be recursive if it partially

consist or is defines in terms of itself”

• perhitungan matematika ( contoh fungsi factorial dan bilangan Fibonacci)

Algoritma dan Pemrograman II

Page 3: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

Faktorial• Fungsi factorial dari bilangan bulat

positif n didefinisikan sebagai berikut:n!= n.(n-1)! , jika n>1n!= 1 , jika n=0, 1

• contoh :3!= 3. 2!3!= 3. 2. 1!3!= 3. 2. 13!= 6

Algoritma dan Pemrograman II

Page 4: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

1. int Faktorial(int n)2. {3. if ((n == 0) || (n == 1 ))4. return (1);5. else6. return (n * Faktorial(n-1));7. }• Pada baris 3 dari fungsi diatas,

nilai n dicek sama dengan 0 atau 1, jika ya, maka fungsi mengembalikan nilai 1 {baris 4}, jika tidak, fungsi mengembalikan nilai n * Faktorial (n -1) {baris 6}

• disinilah letak proses rekursif itu, perhatikan fungsi factorial ini memanggil dirinya sendiri tetapi dengan parameter (n-1)

Kita dapat menuliskan fungsi penghitung factorial seperti dibawah ini

Algoritma dan Pemrograman II

Page 5: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

Bilangan Fibonacci

• Fungsi lain yang dapat diubah ke bentuk rekursif adalah perhitungan Fibonacci. Bilangan Fibonacci dapat didefinisikan sebagai berikut:

fn = fn-1 + fn-2 untuk n > 2f1 = 1f2 = 1

Berikut ini adalah barisan bilangan Fibonacci mulai dari n=1

1 1 2 3 5 8 13 21 34

Algoritma dan Pemrograman II

Page 6: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

Algoritma Fibonacci yang dipakai

Function Fibonacci(input n:integer) integerDeklarasi Lokal {tidak ada}Deskripsi

If (n ==1 || n==2) Then return (l)

Else return (Fibonacci(n-1)+Fibonacci(n-2))

Endif

Algoritma dan Pemrograman II

Page 7: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

Contoh

• Untuk ukuran n= 4, proses perhitungan Fibonacci dapat dilakukan sebagai berikut:

f4 = f3+f2

f4 = (f2+f1) + f2

f4 = (1+1) +1f4 = 3

Algoritma dan Pemrograman II

Page 8: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

KombinasiFunction Kombinasi (input n, r : integer) realDeklarasi If (n < r) Then

return (0) Else

return (Faktorial(n)/Faktorial(r)*Faktorial(n-r)) Endif

Algoritma dan Pemrograman II

Page 9: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

PermutasiFunction Permutasi (input n, r : integer) realDeklarasi

{tidak ada} Deskripsi If (n< r) Then

return (0) Else

return (Faktorial(n) / Faktorial(n-r)) Endif

Algoritma dan Pemrograman II

Page 10: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

Latihan1. Buat program untuk menghitung

deret S = 1+2+3+4+5+...+n menggunakan function rekursi

2. Buat program untuk menghitung deret S = 2+4+6+8+10+...+2n menggunakan function rekursi

Algoritma dan Pemrograman II

Page 11: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

No.1 deret S=1+2+3+4+5+…+nFunction S(input n:integer) integerDeklarasi Lokal {tidak ada}DeskripsiIf (n==1) Then

return (l)Else

return (n + S(n-1))Endif

Page 12: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

No.2 deret S=2+4+6+8+10+…+2n

Function S(input n:integer) integerDeklarasi Lokal {tidak ada}DeskripsiIf (n==1) Then

return (2)Else

return (2*n + S(n-1))Endif

Page 13: 4rekursi-121220005009-phpapp01

wilis k - IFUPN"V"Yk

No. 1 dalam bhs C++ (lengkap)#include<iostream.h>int S(int n);main(){ int n; cout << “Masukkan n = “; cin >> n; cout << “Deret S=1+2+3+4+5+...+n \n”; cout << “Jumlah deret S = “ << S(n);}int S(int n){

if (n == 1) return (1);

else return (n + S(n-1));

}