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).