Rekursif sebuah fungsi yang memanggil dirinya sendiri Salah
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 konsep 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))
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).
- Slides: 10