前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >递归与数学归纳法

递归与数学归纳法

原创
作者头像
LeviMaster
修改2021-09-30 14:30:04
7750
修改2021-09-30 14:30:04
举报
文章被收录于专栏:LeviMasterLeviMaster

递归与数学归纳法

原理

递归与数学归纳法(RMI):Recursion and mathematical induction

递归:程序调用自身的编程技巧称为递归,即通过多次递归调用来化简复杂的问题。

数学归纳法:证明当n=1时命题成立,假设n=m时命题成立,那么可以推导出在n=m+1时命题也成立。

类别

规则:an= fa(n-1) $ fa(n-2) $ fa(n-3) $ ....($和f为某种运算规则)

一阶:an= fa(n-1)

二阶:an= fa(n-1) $ fa(n-2)

三阶:an= fa(n-1) $ fa(n-2) $ fa(n-3)

...

等差数列(一阶)

原理:an = a1 + (n-1)d (a1为首项,d为公差)

数学归纳法

代码语言:txt
复制
a1=a
a2=a1+d
a3=a2+d=a1+2d
...
an=a1+(n-1)d

递归

代码语言:txt
复制
# python

a1=2 # 首项
d=1 # 公差
n=3 # 第n项

def f(n):
	if n==1:return a1
	else return f(n-1) + d

an=f(n)

等比数列(一阶)

原理:an = a1 * q^(n-1) (a1为首项,q为公比)

数学归纳法

代码语言:txt
复制
a1=a
a2=a1*q
a3=a2*q=a1*q*q
...
an=a1*q^(n-1)

递归

代码语言:txt
复制
# python

a1=2 # 首项
q=2 # 公比
n=3 # 第n项

def f(n):
	if n==1:return a1
	else return f(n-1) * q 

an=f(n)

斐波那契数列(二阶)

原理:an = a(n-1)+ a(n-2)

数列: 1 1 2 3 5 8 13 ...

数学归纳法

代码语言:txt
复制
a1=1
a2=1
a3=a1+a2
a4=a2+a3
...
an=a(n-1)+ a(n-2)

递归

代码语言:txt
复制
# python

n=5 # 第n项
def f(n):
	if n==1 or n==2:return 1  # 第一项第二项为1
	else return f(n-1)+f(n-2)

an=f(n)

汉若塔(二阶) Hanoi

原理:汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

解析(捆绑法):将多个转化成 "1"+1 ,即上面的(i-1)个和最下面的一个(即i-1和i),

先把上面的(i-1)个移到中间柱子,然后最下面的移到最后一个柱子,然后重复转换,直至最后一个移到最后一根柱子

数学归纳法

代码语言:txt
复制
1:f(1,A,B,C)=mov(1); 1->C
2:f(2,A,B,C)=f(1,A,C,B)+mov(2)+f(1,B,A,C);  (1->B),  2->C  ,(1->C)
3:f(3,A,B,C)=f(2,A,C,B)+mov(3)+f(2,B,A,C);  (1->C,2->B,1->B),  3->C  ,(1->A,2->C,1->C)
...
n:f(n,A,B,C)=f(n-1,A,C,B)+mov(n)+f(n-1,B,A,C);

递归

代码语言:txt
复制
def hanoi(n, a, b, c):
    if n == 1:
        print(a, '-->', c)
    else:
        hanoi(n - 1, a, c, b)
        print(a, '-->', c)
        hanoi(n - 1, b, a, c)
# 调用
hanoi(5, 'A', 'B', 'C')

爬楼梯(三阶)

原理:每次可以跨1-3个阶梯,求到第n阶有多少种方法

an = a(n-1) + a(n-2) + a(n-3)

数学归纳法

代码语言:txt
复制
a1=1 (1)
a2=2 (11,2)
a3=4 (111,12,21,3)
a4=a1+a2+a3
...
an = a(n-1) + a(n-2) + a(n-3)

递归

代码语言:txt
复制
# python

def f(n):
	if n==1:return 1
	elif n==2: return 2
	elif n==3: return 4
	else return f(n-1) + f(n-2) + f(n-3) 

an=f(n)

N阶

原理:an = a(n-1) + a(n-2) + a(n-3) +a(n-4)+ ...a(n-m)

数学归纳法

代码语言:txt
复制
a1,a2,a3...am
a(m+1)=a1+a2+a3...+am
...
an = a(n-1) + a(n-2) + a(n-3) +a(n-4)+ ...a(n-m)

递归

代码语言:txt
复制
# python

n=k # 第n项
def f(n):
	if n==1:return a1
	elif n==2:return a2
	elif ...
	elif n==m:return am
	else return f(n-1)+f(n-2)+...f(n-m)

an=f(n)

总结

数学归纳法:通过数列之间的关系将其通过某种运算使其产生联系,用有穷举例法验证。

递归:将数学归纳法,通过分解,将多项直接分成两部分,第一部分可以直接返回结果的,

第二部分通过递归调用使其跟数列项之间的关系返回结果,从而简化复杂的问题

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 递归与数学归纳法
    • 原理
      • 类别
      • 等差数列(一阶)
      • 等比数列(一阶)
      • 斐波那契数列(二阶)
      • 汉若塔(二阶) Hanoi
      • 爬楼梯(三阶)
      • N阶
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档