Rekursif(Mg 3).

advertisement
Rekursif
sebuah fungsi yang memanggil
dirinya sendiri
• Salah satu konsep paling dasar dalam ilmu
komputer dan pemrograman adalah
pengunaan fungsi sebagai abstraksi untuk
kode-kode yang digunakan berulang kali.
• Kedekatan ilmu komputer dengan
matematika juga menyebabkan konsepkonsep fungsi pada matematika seringkali
dijumpai.
• Salah satu konsep fungsi pada matematika
yang ditemui pada ilmu komputer adalah
fungsi rekursif: sebuah fungsi yang
memanggil dirinya sendiri
contoh fungsi rekursif, untuk menghitung
hasil kali dari dua bilangan
def kali(a, b):
return a if b == 1 else a + kali(a, b - 1)
selama nilai b bukan 1, fungsi akan terus
memanggil perintah (a + kali(a, b - 1))
kali(2, 4)
-> 2 + kali(2, 3)
-> 2 + (2 + kali(2, 2))
-> 2 + (2 + (2 + kali(2, 1)))
-> 2 + (2 + (2 + 2))
-> 2 + (2 + 4)
-> 2 + 6
-> 8
Contoh lain
def faktorial(n):
return n if n == 1 else n * faktorial(n - 1)
faktorial(5)
-> 5 * faktorial(4)
-> 5 * (4 * faktorial(3))
-> 5 * (4 * (3 * faktorial(2)))
-> 5 * (4 * (3 * (2 * faktorial(1))))
-> 5 * (4 * (3 * (2 * 1)))
-> 5 * (4 * (3 * 2)) -> 5 * (4 * 6)
-> 5 * 24
-> 120
Analisis Algoritma Rekursif
• Perbedaan utama pada algoritma rekursif ialah kita
tidak dapat secara langsung melihat berapa
kali bagian rekursif dari algoritma akan dijalankan.
• Pada algoritma yang menggunakan
perulangan for misalnya, kita dapat langsung
menghitung jumlah perulangan untuk menghitung
total langkah yang dibutuhkan.
• Dalam algoritma rekursif, jumlah perulangan tidak
secara eksplisit bisa didapatkan karena informasi
yang kita miliki adalah kapan algoritma berhenti,
bukan berapa kali kode dieksekusi
def faktorial(n):
return n if n == 1 else n * faktorial(n - 1)
Informasi yg ada :
 algoritma berhenti melakukan rekursif,
jika n == 1.
 jumlah data berkurang pada setiap
pemanggilan faktorial
Untuk kasus n > 1
Fungsi akan berhenti jika harga (n – k) = 1
Sehingga k = n – 1
Maka dapat disimpulkan bahwa fungsi
faktorial memiliki kompleksitas n−1,
atau O(n).
Download