如下是我编写一个递归函数计算一个数字的阶乘
代码如下:
```go
// test
package main
import (
"fmt"
)
// 函数定义
func ProductIn(t1 int) (k int) {
k = 1
if t1 < 1 {
return 0
} else {
if t1 == 1 {
k = 1
} else {
k = t1 * ProductIn(t1-1)
}
}
return
}
func main() {
p := 0
p = ProductIn(100)
fmt.Println("阶乘运算结果是:", p)
}
```
运行go run xxx.go
结果如下:
阶乘运算结果是: 0
我有疑问返回结果怎么是0呢?
用更小一点的数字求阶乘试下就分析出了(`比如20`)
实际上你取的数字太大了,随着阶乘值越来越大,末位数字都被`0`占据,又因为`int`类型能表示的数值范围有限,所以最后数位都被`0`充满,结果就变成`0`了
#5
更多评论