代码
直接上代码:
package main
import "fmt"
import "math/big"
func main() {
var i int64
for i=1;i<=40;i++{
fmt.Println(a(big.NewInt(i)))
}
}
func a(s *big.Int) *big.Int {
if s.Int64() == 1{
return big.NewInt(1)
}else{
return s.Mul(s,a(big.NewInt(s.Int64()-1)))
}
}
解析
- main函数是一个for循环,计算从1至40的阶乘
- a函数是计算阶乘的算法,采用用递归的编程方法
运行结果
其他说明
如果用普通的int64来计算阶乘,最多只能计算到20的阶乘,就溢出了。代码如下
package main
import "fmt"
func main() {
var i int64
for i=1;i<=40;i++{
fmt.Println(a(i))
}
}
func a(s int64) int64 {
if s == 1{
return 1
}else{
return s*a(s-1)
}
}
运行结果:
结论
big包作为go语言的扩展包,用来做科学计算,功能很强大,性能很爆。