我已经写了这个函数来返回给定数字的阶乘
func factorial(_ n: Int) -> Int {
if n == 0 {
return 1
}
else {
return n * factorial(n - 1)
}
}
print( factorial(20) ) // 2432902008176640000
只要给定的数字不超过20,就可以正常工作,因为那时结果会变得太高?
如何绕过这个限制,从而计算出更高数字的阶乘?
已经搜索过并为Swift找到了一些bignum库,我这样做是为了学习并熟悉Swift,因此我想自己解决这个问题。
答案 0 :(得分:1)
您可以使用此库: BigInt
使用CocoaPods安装它:
pod 'BigInt'
然后你可以像这样使用它:
import BigInt
func factorial(_ n: Int) -> BigInt {
if n == 0 {
return 1
}
else {
return BigInt(n) * factorial(n - 1)
}
}
print( factorial(50) ) // 30414093201713378043612608166064768844377641568960512000000000000