Anda di halaman 1dari 17

Algoritma Pemrograman

REKURSIF 2
NISA’UL HAFIDHOH, M.T.
TIM ALPRO – TI S1
Review
Sebelumnya sudah belajar tentang konsep dasar, analisis dan penerapan fungsi rekursif.
Tujuan Pembelajaran
Mahasiswa mampu menjelaskan lebih lanjut konsep rekursif, membuat fungsi rekursif, dan
menganalisis ekspresi rekursif
Penjumlahan Rekursif
Penjumlahan a + b sama dengan menjumlahkan a dengan angka 1 sebanyak b kali.
Contoh: 4 + 3 = 4 + 1 + 1 + 1 = 7
Dari sini kita dapat lihat, jika angak 1 akan ditambahkan terus sebanyak b kali, jika b sudah habis
kemudian ditambah a  hal ini dapat digunakan sebagai acuan basis
◦ b = 0 -> a

Bagaimana cara mengurangi masalah? Tulis kembali persamaan yang lebih sederhana untuk
meraih basis, kita dapat lihat pola penjumlahannya.
◦ a+1+1+1
◦ Sebanyak b kali
Bentuk Kerangka Notasi Umum
Fungsi F(<berisi list-param>) :
If <kondisi-basis> then <ekspresi-1 >
else <kondisi-rekurens> then F(<ekspresi-2 >)

Fungsi Tambah(a:int,b:int) :
if b == 0 then
return a
else
return 1 + Tambah(a,b-1)
Analisis
Fungsi Tambah(a:int,b:int) Diketahui a = 4 dan b = 3
Fungsi Tambah(4,3) = 1 + Tambah(a,b-1)
= 1 + Tambah(4, 3-1)
= 1 + ( 1 + Tambah(4, 2-1) )
= 1 + ( 1 + ( 1 + Tambah(4, 1-1) ) , basis fungsi Tambah jika mencapai b=1-1=0
(jika b = 0, maka return a)
=1+(1+(1+4))
=1+(1+5)
=1+6
=7
Iterasi vs Rekursi
Rekursi mungkin lebih sederhana, lebih mudah dipahami secara intuitif
Rekursi mungkin lebih efisien dilihat dari sudut pandang programmer (tidak banyak mengetik
program)
Rekursi mungkin tidak efisien dilihat dari sudut pandang mesin
Penalaran Induktif
Penalaran induktif adalah proses berpikir untuk menarik kesimpulan berupa prinsip atau sikap
yang berlaku umum berdasarkan atas fakta-fakta yang bersifat khusus.
Prosesnya disebut induksi.
Contoh penalaran induktif :
◦ Harimau memiliki taring.
◦ Anjing memiliki taring.
◦ Serigala memiliki taring.
◦ Semua hewan karnivora memiliki taring.
Penalaran Induktif
Pada basis, pemangilan Kali dengan b = 1 tidak Fungsi Kali(a:int,b:int) :
memuat pemanggilan rekursif dan berhenti
if b == 1 then
Pada saat b > 1 akan membuat pemanggilan rekursif
dengan versi yang lebih kecil dari b; hal itu akan return 1
dilakukan terus menerus sampai pemanggilan b = 1 else
Jika diteruskan, pembahasan ini akan terkait dengan return a + Kali(a,b-1)
induksi matematika.
Fibonacci
Atau dikenal dengan deret fibonacci
Dinamai Fibonacci oleh Leonardo of Pisa (Ilmuan matematika dari italia)
Deret Fibonacci: 1,1,2,3,5,8,13,21,34,55,89,144...
Penerapan: Seni, Alam, Ekonomi, dll

https://en.wikipedia.org/wiki/Fibonacci_number
Contoh kasus Menebak Nilai Fibonacci
Asumsi x merupakan bilangan bulat positif yang digunakan sebagai acuan untuk mencari
bilangan fibonacci.
Misal
◦ Jika x = 1 maka ouput bilangan fibonaccinya adalah 1
◦ Jika x = 5 maka output bilangan fibonaccinya adalah 8

Perhatikan bahwa basisnya adalah jika x bernilai 0 atau 1, maka mengembalikan 1


Kondisi rekurennya?
Realisasi
def fib(x):
if x == 0 or x == 1:
return 1
else:
return fib(x-1) + fib(x-2)

Catatan: panggil fib(100) akan butuh waktu yang sangat lama...


Analisis
Diketahui x = 4
x=4 = fib(4-1) + fib(4-2)
= fib(fib(3-1)+fib(3-2)) + fib(fib(2-1)+fib(2-2))
= fib(fib(fib(fib(2-1)+fib(2-2))+fib(3-2)) + fib(fib(2-1)+fib(2-2))
= (1+1)+1+(1+1)
=5
Merge Sort
Dulu sebelum UTS pernah melakukan pengurutan dengan metode
Merge Sort tetapi versi iteratif.
Divide and Conquer Strategy -> Versi Rekursif
Merge Sort Recursive
Merge Sort Recursive
Pisahkan list separuhnya kemudian Satukan kembali sedikit demi sedikit.
Referensi
Beberapa konten di slide ini terjemahan dari: Introduction to Computer Science and
Programming in Python, MIT, Introduction to Computer Science and Programming in Python,
MIT https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-
introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-slides-
code/MIT6_0001F16_Lec6.pdf
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to
Algorithm Third Edition, MIT Press (2009)
Guttag, John. Introduction to Computation and Programming Using Python: With Application to
Understanding Data Second Edition. MIT Press, 2016. ISBN: 9780262529624.

Anda mungkin juga menyukai