再用归纳法证明factorial递归函数的正确性?
时间: 2024-10-07 16:04:44 浏览: 19
JS中递归函数
5星 · 资源好评率100%
归纳法是一种证明数学性质的有效方法,通常用于证明算法的正确性,例如阶乘函数的递归定义。阶乘(n!)是一个数列,其中n! = n × (n - 1) × (n - 2) × ... × 2 × 1。对于递归版本的阶乘函数:
```python
def factorial(n):
if n == 0 or n == 1: # 基础情况
return 1
else:
return n * factorial(n - 1) # 归纳步骤
```
我们采用归纳法证明其正确性:
1. **基础情况**(零阶和一阶的阶乘):当输入n为0或1时,`factorial(n)`直接返回1,这是显然正确的,因为0! 和 1! 都等于1。
2. **归纳假设**:我们假设对于某个正整数k,`factorial(k)`是正确的,即 `factorial(k) = k!`。
3. **归纳步骤**:现在我们需要证明当n=k+1时,`factorial(n)`也是正确的。根据递归定义,有 `factorial(n) = n * factorial(n - 1)`。根据归纳假设我们知道`factorial(n - 1) = (k + 1)! / k`(因为我们假设k!成立)。所以:
```markdown
factorial(n) = n * (k + 1)! / k
= (k + 1) * (k + 1)! / k (因为n = k + 1)
= (k + 1)! (简化除法)
```
这表明当n=k+1时,`factorial(n)`也等于 `(k + 1)!`,符合递归定义。
通过以上两步,我们可以得出结论:对于所有非负整数n,`factorial(n)`都是正确的。这就是递归版阶乘函数的归纳证明。
阅读全文