Update profile.go

This commit is contained in:
YikesHome 2019-10-30 03:48:41 +08:00 committed by GitHub
parent bd27cda490
commit 7759f2ede9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,3 +10,16 @@ func Duration(invocation time.Time, name string) {
log.Printf("%s lasted %s", name, elapsed) log.Printf("%s lasted %s", name, elapsed)
} }
func BigIntFactorial(x big.Int) *big.Int {
// Arguments to a defer statement is immediately evaluated and stored.
// The deferred function receives the pre-evaluated values when its invoked.
defer Duration(time.Now(), "IntFactorial")
y := big.NewInt(1)
for one := big.NewInt(1); x.Sign() > 0; x.Sub(x, one) {
y.Mul(y, x)
}
return x.Set(y)
}