Skip to content

Commit 5d68032

Browse files
committed
chore: menambahkan fungsi faktorial dengan 2 metode
metode dari fungsi faktorial ini mencakup - metode rekursif - metode looping (for statement) Signed-off-by: slowy07 <slowy.arfy@proton.me>
1 parent f7e9106 commit 5d68032

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

math/faktorial_looping.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
def faktorial_looping(angka: int) -> int:
2+
"""
3+
Faktorial adalah hasil perkalian dari semua bilangan positif yang dimulai
4+
dari 1 hingga bilangan tersebut, notasi dalam faktorial dilambangan dengan
5+
exclamation `angka!` / `n!` / `number!`
6+
7+
pendekatan perhitungan ini menggunakan metode looping, salah satunya dengan
8+
menggunakan looping `for` statement.
9+
10+
sebagai contoh:
11+
12+
5 x 4 x 3 x 2 x 1 = 120, jika nilai yang diberikan nol maka hasilnya adalah 1
13+
14+
Parameter:
15+
angka (int): nilai yang dikalkulasi faktorialnya
16+
17+
Return:
18+
int: hasil nilai yang akan diberikan dari `angka!`
19+
20+
Contoh:
21+
>>> faktorial(5)
22+
120
23+
>>> faktorial(2)
24+
2
25+
>>> faktorial(10)
26+
3628800
27+
"""
28+
if not isinstance(angka, int):
29+
raise TypeError("fungsi faktorial() hanya bekerja dengan tipe data integer")
30+
31+
if angka < 0:
32+
raise ValueError("parameter angka tidak boleh negatif")
33+
34+
nilai: int = 1
35+
for i in range(1, angka + 1):
36+
nilai *= i
37+
return nilai
38+
39+
40+
if __name__ == "__main__":
41+
import doctest
42+
43+
doctest.testmod()
44+
45+
angka: int = 3
46+
print(f"faktorial dari {angka} adalah: {faktorial_looping(3)}")

math/faktorial_rekursif.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
def faktorial_rekursif(angka: int) -> int:
2+
"""
3+
Faktorial adalah hasil perkalian dari semua bilangan positif yang dimulai
4+
dari 1 hingga bilangan tersebut, notasi dalam faktorial dilambangan dengan
5+
exclamation `angka!` / `n!` / `number!`
6+
7+
pendekatan perhitungan ini menggunakan pendekatan rekursif, dengan memanggil
8+
fungsinya sendiri hingga mencapai base casenya.
9+
10+
sebagai contoh:
11+
12+
5 x 4 x 3 x 2 x 1 = 120, jika nilai yang diberikan nol maka hasilnya adalah 1
13+
14+
Parameter:
15+
angka (int): nilai yang dikalkulasi faktorialnya
16+
17+
Return:
18+
int: hasil nilai yang akan diberikan dari `angka!`
19+
20+
Contoh:
21+
>>> faktorial(5)
22+
120
23+
>>> faktorial(2)
24+
2
25+
>>> faktorial(10)
26+
3628800
27+
"""
28+
if not isinstance(angka, int):
29+
raise TypeError("fungsi faktorial() hanya bekerja dengan tipe data integer")
30+
31+
if angka < 0:
32+
raise ValueError("parameter angka tidak boleh negatif")
33+
34+
return 1 if angka in {0, 1} else angka * faktorial_rekursif(angka - 1)
35+
36+
37+
if __name__ == "__main__":
38+
import doctest
39+
40+
doctest.testmod()
41+
42+
angka: int = 3
43+
print(f"faktorial dari {angka} adalah: {faktorial_rekursif(3)}")

0 commit comments

Comments
 (0)