次のコードスニペットを検討してください-
def factorial(number) {
if(number == 1)
return number;
else
return number * factorial(number - 1);
}
println factorial(50)
println factorial(50).getClass()
println()
println 45**20
println ((45**20).getClass())
出力は-
0
class java.lang.Integer
1159445329576199417209625244140625
class java.math.BigInteger
質問-
- 最初のケースで、 groovyがの結果
number * factorial(number-1)
を自動的にプロモートしないのはなぜですか?BigInt
- 出力が0なのはなぜですか?整数のオーバーフローの後に取得する必要があるのは、なぜ乱数ではないのですか?