Factorial using `for` loop in Kotlin

Viewed 3385

With experience of java programming, I started learning Kotlin today. I am playing with the language and found me stuck to find a factorial using for loop in kotlin. I managed to do this using while loop.

import java.util.Scanner

fun main(args: Array<String>){
    val reader=Scanner(System.`in`)
    val x: Int = reader.nextInt()
    println(factorial(x))
}

fun factorial(a: Int): Int{
    var ans=1
    var i: Int = a
    while(i>1){
        ans*=i
        i--
    }
    return ans
}

Please help me to do this using a for loop.

Thanks

7 Answers

Alternative using recursion:

fun factorial(number: Int): Int {
    when (number) {
        0 -> return 1
        else -> return number * factorial(number - 1)
    }
}

Other way :

fun factorial (data : Int) : Long {
        var result : Long = 1
        (1..data).map {
            result *= it;
        }
        return result;
    }

if you want use BigInteger :

fun factorial (data : Int) : BigInteger {
        var result : BigInteger = 1.toBigInteger()
        (1..data).map {
            result *= it.toBigInteger();
        }
        return result;
    }
Related