Kotlinで階乗計算(再起呼び出し)

引数をnを渡す
nが5の場合は、5 * 4 * 3 * 2 * 1 の処理結果を返す
nが3の場合は、3 * 2 * 1の処理結果を返す
1関数で再起処理で結果を返す(ループなどで var sum:Int = 0などで結果値を変数で保持しない)

fun factorial(n: Int): Int {
    return if (n <= 0) 1 else n * factorial(n - 1)
}

// 呼び出し
println(factorial(3)) // 3 * 2 * 1 = 6
println(factorial(5)) // 5 * 4 * 3 * 2 * 1 = 120
println(factorial(10)) // 10 * 9 .... = 3628800
BigIntegerで階乗計算
fun factorial(n: BigInteger): BigInteger {
    return if (n <= BigInteger.ONE) BigInteger.ONE else n * factorial(n - BigInteger.ONE)
}

// 呼び出し
println(factorial(BigInteger.valueOf(100)))
// 結果
// 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000