fun main(args : Array<String>){
println(factorial(8))
// println("Faktorial dari 8 adalah ${simpleFaktor(8)}")
println(factorialTail(8))
println(factorialtailrec(8))
}
fun factorial(n: Int): Int{
return if(n == 1){
n
}
else{
var result = 1
for (i in 1..n){
result *=i
}
result
}
}
//factorialBisaHitungBanyak
fun factorialTail(n: Int, result: Int = 1): Int {
val newResult = n * result
return if (n == 1) {
newResult
} else {
factorialTail(n - 1, newResult)
}
}
fun simpleFaktor(n: Int): Int{
return if (n == 1){
n
}
else{
n * factorial(n - 1)
}
}
tailrec fun factorialtailrec(n: Int, result: Int = 1): Int {
val newResult = n * result
return if (n == 1) {
newResult
} else {
factorialtailrec(n - 1, newResult)
}
}