Anda di halaman 1dari 21

Algoritma & Pemrograman

Saintifik

Teknik

REKURSIF
DEPARTEMEN MATEMATIKA
Fakultas Matematika dan Ilmu Pengetahuan Alam

Universitas Indonesia
Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Algoritma Rekursif
Adalah algoritma yang memanggil dirinya
sendiri.
Komponennya :

Basis

: kondisi berhenti
Fungsi rekurens : memanggil dirinya dengan
parameter yang berbeda dan menuju basis.

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Review Algoritma Iteratif

Contoh : Jumlah N suku pertama bil asli


INPUT N
S0
FOR I = 1 TO N
SS+I
NEXT I
OUTPUT S

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Review Algoritma Iteratif

Contoh : Jumlah N suku pertama bil asli


INPUT N
S0
I1
WHILE I N DO
SS+I
II+1
END WHILE
OUTPUT S

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Algoritma Rekursif
Contoh :

Tentukan hasil Jumlah N suku pertama bil asli


Sum (N)
IF N < 2 THEN
Sum 1
ELSE
Sum N + Sum (N-1)
END IF;

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Simulasi Algoritma Sum N=4


4

10

+
3

+
2

Jadi hasilnya adalah 10


Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Review Algoritma Rekursif

Contoh : Tentukan Faktorial dari N


Fakt (N)
IF N < 2 THEN
Fakt 1
ELSE
Fakt N * Fakt (N-1)
END IF;

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Simulasi Algoritma Faktorial N=4


4

24

*
3

2
1

Jadi hasilnya adalah 24


Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Algoritma Rekursif

Jika diketahui fungsi :


F(0)

= 0 dan
F(x) = x2 + 2F(x-1)

Maka tentukanlah F(4) .!

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

Algoritma Rekursif

Jawab :
F(1)

=1
F(2) = 6
F(3) = 21
F(4) = 58

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

10

Simulasi untuk N=4


58

16

*
9

21

+
4

+
1

Jadi hasilnya adalah 58


Tim Dosen 2014

Algoritma & Pemrograman Saintifik

*
+

0
11

Algoritma Rekursif
Diketahui :
f(x) + f(x+1) = 2x2 dan f(31) = 99
Tentukan nilai f(99) !

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

12

Algoritma Rekursif

Jawab :
f(x) + f(x+1) = 2x2 f(x+1) = 2x2 f(x)

f(99) = f(98+1) = 2(98)2 f(98)


= 2(98)2 {2(97)2 f(97)}
= 2(98)2 2(97)2 + f(97)
= 2(98)2 2(97)2 + 2(96)2 f(96)
= 2(98)2 2(97)2 + 2(96)2 2(95)2 + f(95)
= 2(98)2 2(97)2 + 2(96)2 2(95)2 + +
2(32)2 2(31)2 + f(31)
= 2{(98)2 (97)2 + (96)2 (95)2 + + (32)2 (31)2}+
f(31)
= 2{98 + 97 + 96 + 95 + + 32 + 31} + 99
= 2{ 98 x 99 30 x 31 } + 99 = 8871

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

13

Algoritma Fibonacci

Barisan bilangan :

Barisan tersebut diantaranya :

F0 = 0 dan F1 = 1
Fn = Fn-1 + Fn-2

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ..

Buatlah algoritmanya !
Jika n besar (misal 40) maka berapa kali
pemanggilan fungsi rekursifnya..?

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

14

Algoritma Fibonacci
Jawab :
Fib (N)
If N 1 then
Fib

Else
Fib

=N
= Fib(N-1) + Fib(N-2)

End If

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

15

Algoritma Fibonacci
Atau Jawab :
Fib (N)
If N = 0 atau N = 1 then
Fib

Else
Fib

=N
= Fib(N-1) + Fib(N-2)

End If

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

16

Algoritma Fibonacci
Simulasi : untuk N = 4
Hasilnya
4

2
1

Tim Dosen 2014

+
0

3
2

+
1

0
Algoritma & Pemrograman Saintifik

17

Latihan 1 :

Konversikan suatu bilangan desimal ke


dalam basis yang lebih kecil.!

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

18

Jawaban Latihan 1

MULAI

N,B

I=1
Tidak
NB
Ya
S(I) = MOD(N,B)

S(I) = N

N = INT(N,B)

K=I

I=I+1

STOP

Ya

K<1

Tidak

CETAK
S(K)
K=K-1

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

19

Bilangan Amstrong

Adalah suatu bilangan yang nilainya sama


dengan jumlah pangkat tiga setiap
digitnya.

Misalkan :
153

Tim Dosen 2014

= 1 3 + 53 + 33

Algoritma & Pemrograman Saintifik

20

Latihan 2 :

Buatlah algoritma yang menghasilkan


bilangan Amstrong dalam interval 1
sampai dengan 2000!

Tim Dosen 2014

Algoritma & Pemrograman Saintifik

21

Anda mungkin juga menyukai