Induction与recursion

“Induction”和“recursion”是计算机科学和数学中的两个重要概念,尽管它们有时看起来相似,但它们在定义和应用上有着不同的特征。

数学归纳法(Induction)

定义:
数学归纳法是一种用于证明数学命题对所有自然数成立的方法。它通常用于证明命题 ( P(n) ) 对于所有自然数 ( n ) 都成立。

步骤:

  1. 基例(Base Case): 证明命题对最小自然数(通常是 0 或 1)成立。
  2. 归纳假设(Inductive Hypothesis): 假设命题对某个自然数 ( k ) 成立,即 ( P(k) ) 为真。
  3. 归纳递推(Inductive Step): 在归纳假设的基础上,证明命题对 ( k+1 ) 成立,即证明如果 ( P(k) ) 为真,则 ( P(k+1) ) 也为真。

例子:
证明 ( 1 + 2 + ⋯ + n = n ( n + 1 ) 2 ) ( 1 + 2 + \cdots + n = \frac{n(n+1)}{2} ) (1+2++n=2n(n+1))

  • 基例: 对于 n = 1 n = 1 n=1,左边为 1,右边为 1 ( 1 + 1 ) 2 = 1 \frac{1(1+1)}{2} = 1 21(1+1)=1。两边相等。
  • 归纳假设: 假设对 n = k n = k n=k 成立,即 1 + 2 + ⋯ + k = k ( k + 1 ) 2 1 + 2 +\cdots + k = \frac{k(k+1)}{2} 1+2++k=2k(k+1)
  • 归纳步骤: 证明对 n = k + 1 n = k+1 n=k+1 成立:
    1 + 2 + ⋯ + k + ( k + 1 ) = k ( k + 1 ) 2 + ( k + 1 ) = k ( k + 1 ) + 2 ( k + 1 ) 2 = ( k + 1 ) ( k + 2 ) 2 1 + 2 + \cdots + k + (k+1) = \frac{k(k+1)}{2} + (k+1) = \frac{k(k+1) + 2(k+1)}{2} = \frac{(k+1)(k+2)}{2} 1+2++k+(k+1)=2k(k+1)+(k+1)=2k(k+1)+2(k+1)=2(k+1)(k+2)

递归(Recursion)

定义:
递归是定义一个过程或函数在其定义过程中调用自身的方法。递归通过解决一个问题的子问题来实现问题的求解。

特点:

  • 基例: 递归必须有一个或多个不需要递归调用的基例,以防止无限递归。
  • 递归调用: 在更简单的子问题上调用自身。

例子:
计算阶乘 n ! n! n! 的递归定义:

  • 基例: 0 ! = 1 0! = 1 0!=1
  • 递归步骤: n ! = n × ( n − 1 ) ! n! = n \times (n-1)! n!=n×(n1)!

Python 实现:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

区别

  1. 目的不同:
  • 数学归纳法用于证明命题对所有自然数成立。
  • 递归用于定义和解决问题的算法。
  1. 应用领域:
  • 数学归纳法常用于数学证明。
  • 递归常用于编程和算法设计。
  1. 结构:
  • 数学归纳法由基例、归纳假设和归纳步骤构成。
  • 递归由基例和递归调用构成。
  1. 工作原理:
  • 数学归纳法依赖逻辑证明。
  • 递归依赖函数自调用解决问题。

总结来说,数学归纳法是一个证明工具,而递归是一个问题求解方法,它们虽然在结构上有相似之处(都包含基例和递归/归纳步骤),但在实际应用和目的上是不同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值