阶乘公式: 根据以上阶乘公式,编写一个函数,运用函数的递归调用,求解整数n的阶乘: 传入:整数 n 返回:整数 n 的阶乘(整数) 在main函数中,调用写好的函数并传入实参。使用至少两组数据以验证函数功能的正确性。
时间: 2024-10-10 17:05:02 浏览: 9
阶乘公式的确切表述是n! = n × (n-1) × (n-2) × ... × 1。为了使用递归实现这个功能,我们可以在Go语言中创建一个名为`factorial`的函数,它会接收一个整数`n`作为参数,并通过递归调用来计算阶乘。当n等于1时,基本情况是返回1(因为1的阶乘是1),否则返回n乘以n减一的阶乘。
以下是相应的代码实现:
```go
package main
// factorial 函数计算n的阶乘
func factorial(n int) int {
if n == 0 || n == 1 { // 递归的基本情况
return 1
} else {
return n * factorial(n-1)
}
}
func main() {
// 测试数据
tests := []struct {
input int
expected int
}{
{5, 120}, // 5! = 5 * 4 * 3 * 2 * 1 = 120
{0, 1}, // 0! 根据约定为1
}
for _, test := range tests {
result := factorial(test.input)
if result != test.expected {
panic("测试失败: 输入 " + strconv.Itoa(test.input) + " 应该得到 " + strconv.Itoa(test.expected) + ",实际结果是 " + strconv.Itoa(result))
}
fmt.Printf("对于输入 %d,阶乘结果是:%d\n", test.input, result)
}
}
```
在这个程序里,`main`函数中包含了两组测试数据,验证了`factorial`函数的正确性。
阅读全文