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