From e5e713a63fff1ed7a2bc1ee3d4116346a2d550f0 Mon Sep 17 00:00:00 2001 From: Konstantin Chukhlomin Date: Mon, 17 Feb 2020 11:46:21 -0500 Subject: [PATCH] Updated Rob Pike example --- README.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ccdb013..3ba430e 100644 --- a/README.md +++ b/README.md @@ -210,17 +210,20 @@ func Factorial(n int) int { ## Rob Pike ```text -package fac - -// Factorial returns n!. -func Factorial(n int) int { - res := 1 - - for i := 1; i <= n; i++ { - res *= i +func factorial(n int64) (*big.Int, error) { + if n < 0 { + return nil, fmt.Errorf("negative value %d for factorial", n) } - - return res + fac := big.NewInt(1) + if n == 0 { + return fac + } + x := big.NewInt(0) + for i := int64(2); i <= n; i++ { + x.SetInt64(i) + fac.Mul(fac, x) + } + return fac } ```