VBA‎ > ‎

Faktorial di VBA

posted 2 Nov 2012, 03:33 by Kampau Ocu   [ updated 2 Nov 2012, 23:41 ]
Salah satu contoh kasus fungsi rekursif adalah faktorial.

Landasan Matematika


1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 3 * ( 2 * 1 ) = 3 * 2!
4! = 4 * 3!
...
n! = n * (n-1)!

Kode BASIC / VBA

Dengan landasan matematika seperti di atas, kita bisa dapatkan algoritma untuk menghitung faktorial menggunakan fungsi rekursif seperti berikut:

Function faktorial(l As Integer) As Integer
    If l > 1 Then
        faktorial = l * faktorial(l - 1)
    Else
        faktorial = 1
    End If
End Function

Perhatikan baik-baik perbedaan antara huruf L dengan angka 1.
Saya sengaja menggunakan huruf L kecil agar Anda lebih berhati-hati dalam membaca kode program.

Test dengan VBA

Sekarang coba test pemanggilan fungsi tersebut dengan kode berikut:

Private Sub test()
    MsgBox faktorial(7)
End Sub
 
Jika program tersebut dijalankan (F5) maka akan keluar sebuah message-box seperti berikut:
Hasil faktorial 7 yaitu 5040

7! adalah 7 * 6 * 5 * 4 * 3 * 2 * 1 = 5040

Tetapi, coba jika Anda mencoba menjalankan 8 faktorial, 

Private Sub test()
    MsgBox faktorial(8)
End Sub

maka tampilannya malah seperti berikut:
Runtime error 6 : Overflow

Pesan kesalahan ini dikarenakan perhitungan faktorial telah melebihi batas Integer
Perhatikan penjelasan berikut dari Microsoft Office:

Integer

Terlihat bahwa batasan integer hanya sampai 32767, jika lebih dari itu maka akan overflow (melimpah)
8! adalah 40320.






Comments