Rekursif
Rekursif
𝑓𝑖𝑏 (𝑛)𝑛 ∫ 𝑛
𝑒 𝑙𝑠𝑒 𝑟𝑒𝑡𝑢𝑟𝑛 𝑓𝑖𝑏 ( 𝑛 −1) +𝑓𝑖𝑏 (𝑛 − 2) ;
Algoritma Fibonacci Menggunakan Iteratif
• Mendefinisikan nilai pertama (n1=0) dan nilai kedua (n2=1) kemudian
mencetaknya kedua bilangan tersebut
• Melakukan perulangan dimulai dari deret angka kedua sampai dengan
deret ke n (di mana n merupakan suatu parameter yang dapat
diinputkan oleh user dan n ini merupakan banyaknya deret yang akan
ditampilkan)
• Di dalam kolom looping ditambahkan nilai n1 dan n2 yang ditampung dalan
sebuah variable (n3), lalu nilai hasil penambahan tersebut langsung dicetak.
• Kemudian lakukan pemrosesan assignment n1=n2 dan n2=n3
Diskusi
• Berdasarkan algoritma yang sudah dijelaskan di atas, buat program
yang dapat membandingkan waktu eksekusi kedua algoritma deret
Fibonacci yang bersifat iteratif dan yang bersifat rekursif, adapun hasil
pengujianya adalah sebagai berikut :
No Banyaknya (n) Waktu Fib Iteratif Fib (Rekursif)
1. 100
2. 300
3. 500
4. 800
5. 1.000
(2). Menara Hanoi
Seorang biarawan memiliki 3 menara.
Diharuskan memindahkan 64 piringan emas.
Diameter piringan tersebut tersusun dari ukuran kecil ke besar.
Biarawan berusaha memindahkan semua piringan dari menara pertama ke menara ketiga tetapi harus
melalui menara kedua sebagai menara tampungan.
• Kondisi:
Piringan tersebut hanya bisa dipindahkan satu-satu.
Piringan yang besar tidak bisa diletakkan di atas piringan yang lebih kecil.
Ternyata : akan memakan waktu sangat lama.
Secara teori, diperlukan 264-1 perpindahan. Jika kita salah memindahkan, maka jumlah perpindahan
akan lebih banyak lagi.
• Jika satu perpindahan butuh 1 detik, maka total waktu yang dibutuhkan lebih dari 500 juta
tahun !!.
(1) Menara Hanoi
• Menara Hanoi adalah persoalan untuk memindahkan tumpukan piring
dari suatu tonggak ke tonggak lain dengan bantuan sebuah tonggak
perantara.
• Penyelesaian secara rekursif untuk persoalan ini untuk n buah piring:
• Pindahkan n-1 piring teratas pada tonggak A ke tonggak B, dengan
menggunakan tonggak C sebagai perantara.
• Pindahkan 1 piring tersisa pada tonggak A ke tonggak C.
• Pindahkan n-1 piring teratas pada tonggak B ke tongak C, dengan
menggunakan tonggak A sebagai perantara.
(2) Menara Hanoi
• Sebuah permainan dimana sejumlah piringan dipindahkan dari
tonggak satu ke tonggak lainnya dan dapat menggunakan tonggak
bantuan
Caranya semua piringan di tonggak A akan dipindahkan ke
tonggak C secara satu persatu dan piringan yang besar tidak
boleh diletakkan di atas piringan yang kecil.
(3) Menara Hanoi
(4) Menara Hanoi
• Algoritma:
• Jika n==1, pindahkan piringan dari A ke C
• Jika tidak:
• Pindahkan n-1 piringan dari A ke B menggunakan C sebagai tampungan
• Pindahkan n-1 piringan dari B ke C menggunakan A sebagai tampungan
(5)
(6) Menara Hanoi
• Untuk menyelesaikan puzzle di atas dalam pemrograman, kita dapat menggunakan
teknik rekursif. Rekursif adalah fungsi atau prosedure yang dapat memanggil dirinya
sendiri.
FUNCTION MoveTower(disk, source, dest, spare):
IF disk == 0, THEN:
move disk from source to dest
ELSE:
MoveTower(disk - 1, source, spare, dest) // Step 1 above
move disk from source to dest // Step 2 above
MoveTower(disk - 1, spare, dest, source) // Step 3 above
END IF
• Buatlah program rekursif untuk memecahkan permasalahan
Menara Hanoi !
• Program ini merupakan program untuk menampilkan
pergerakkan menara hanoi, yang merujuk pada class
menaraHanoi. Secara umum algoritma menara hanoi, adalah
memindahkan sub menara hanoi dengan n – 1 pin dari n pin
ke tiang perantara. Lalu memindahkan pin ke n ke tiang
tujuan, lalu memindahkan sub menara hanoi dengan n – 1
pin yang ada di tiang perantara, ke tiang tujuan. StopCase
nya jika n == 1.
• Jumlah disk : 3
• Langkah-langkah nya adalah dengan :
• Pindahkan disc 1 dari pasak A ke pasak C
• Pindahkan disc 2 dari pasak A ke pasak B
• Pindahkan disc 1 dari pasak C ke pasak B
• Pindahkan disc 3 dari pasak A ke pasak C
• Pindahkan disc 1 dari pasak B ke pasak A
• Pindahkan disc 2 dari pasak B ke pasak C
• Pindahkan disc 1 dari pasak A ke pasak C