Konsep Pengambilan Keputusan Dalam Sistem

advertisement
Struktur Data
Iterasi & Rekursif
Rijal Fadilah S.Si
Program Studi Teknik Informatika
STMIK Balikpapan
Definisi Iterasi
• Iterasi dalam looping adalah proses yang
berpengaruh dalam nilai dari variabel yang
ditetapkan sebagai acuan looping.
• Atau dapat pula dikatakan bahwa, iterasi
adalah bagaimana penambahan nilai atau
pengurangan dalam perulangan
Iterasi
• Kemampuan prosessor dalam melakukan
pengulangan tugas atau instruksi
• 4 konsep dalam iterasi :
– Terdapat inisialisasi nilai
– Terdapat bentuk modifikasi data
– Statement yang membentuk
menyertakan modifikasi data
– Harus ada penghentian iterasi
iterasi
harus
Mencetak angka 1 sampai 1000
#include <iostream>
using namespace std;
Contoh
void main()
{
int i = 1;
//kondisi ditetapkan (bahwa selama i lebih kecil atau sama dengan 1000 ada perintah yang
diberikan pada program...)
while (i <= 1000)
{
//perintah untuk mencetak nilai dari i dan kemudian membuat baris baru
cout << i << “\n”;
//iterasi
++i;
//i = i + 1;
//i += 1;
}
}
Definisi Rekursif
• Rekursif : metode matematika yakni definisi
sebuah fungsi mengandung fungsi itu sendiri.
• Rekursif : fungsi yang memanggil dirinya
sendiri dan tergolong dalam dynamic
programming.
• Rekursif: suatu kemampuan subrutin /
subprogram untuk memanggil dirinya sendiri.
Contoh Rekursif
• Contoh sederhana dari proses rekursi adalah proses menghitung nilai
faktorial dari bilangan bulat positif
0! = 1
N! = N x (N-1)! untuk N > 0
• Jika diubah dalam notasi pemrograman :
FAKTORIAL(0) = 1
FAKTORIAL(N) = N * FAKTORIAL(N-1)
1)
2)
Persamaan 2) di atas merupakan contoh hubungan rekurens (recurrence relation),
yang berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari
fungsi yang sama dengan argumen yang lebih kecil.
Persamaan 1) yang tidak bersifat rekursif, disebut nilai awal. Setiap fungsi rekursi
paling sedikit mempunyai 1 nilai awal; jika tidak, fungsi tersebut tidak bisa
dihitung secara eksplisit.
Proses Rekursif
Perhatikan fungsi berikut :
Function FAKT(N: Integer) : Integer;
Begin
If N = 0 then
FAKT := 1
Else
FAKT(N) := N * FAKT(N-1)
End;
Dari fungsi di atas bisa dilihat bahwa FAKT(N) bisa dihitung dari FAKT(N-1), dimana
FAKT(N-1) bisa dihitung dari FAKT(N-2) dan seterusnya. Dengan demikian, fungsi di atas
untuk N = 6 bisa kita lacak cara kerjanya .
4
24
FAKT
3
6
Proses Rekursif
FAKT
2
2
FAKT
1
1
FAKT
1
0
FAKT
• Untuk menghitung FAKT(N), fungsi harus memanggil nilai FAKT(N-1) yang telah
diperoleh. Demikian juga untuk menghitung nilai FAKT(N-1), fungsi harus
memanggil FAKT(N-2), dan seterusnya.
• Notasi FAKT(N-1), yang digunakan untuk memanggil nilai fungsi sebelumnya,
sering disebut dengan pemanggil rekursi atau recursion call.
• Dalam ilustrasi di atas, pemanggil rekursi ditunjukkan dengan tanda anak panah.
Sama halnya dengan prosedur atau fungsi yang lain, maka dalam rekursi pasti
ada pemanggil rekursi.
Proses Rekursif
• Gambar tersebut bisa dijelaskan sebagai berikut (panah ke bawah menunjukkan
nilai parameter actual yang dilewatkan ke dalam fungsi FAKT).
• Pada saat program mengerjakan FAKT(4) ia akan melakukan test bahwa 4 tidak
sama dengan 0 (karena FAKT(0) ditetapkan sebagai nilai awal).
• Dengan demikian, ia perlu menghitung FAKT(N-1) (yang sama dengan FAKT(3))
terlebih dahulu. Sehingga program akan mengerjakan FAKT(3), sementara
bilangan 4 dan operatornya akan disimpan lebih dahulu.
• Proses diteruskan sampai mengeksekusi FAKT(0), yaitu nilai awal yang
ditentukan, maka proses rekursif dihentikan.
• Dengan telah diperolehnya nilai FAKT(0), maka segera bisa diperoleh nilai
FAKT(1) yang sama dengan 1 * FAKT(0), yang memberi hasil sama dengan 1.
Proses ini diteruskan sampai dihasilkan nilai akhir yang dikembalikan oleh fungsi
FAKT ini yaitu sama dengan 24
Download