1 递归的定义
两个关键特征
-链条:计算过程中存在递归链条,如:n!和(n-1)!
-基例:存在一个或多个不需要再次递归的实例,如n=0时,n!=1
2 递归的实现
需要函数与分支语句进行组合:
-递归本身就是一个函数,需要函数定义方式描述,这样可以方便调用自身
-函数内部,采用分支语句对输入参数进行判断
-基例和链条,分别编写对应代码
def fact(n):
if n == 0:
return 1
else:
return n*fact(n-1)
2.1 实例解析
2.1.1字符串反转
将字符串s反转后输出
def rvs(s):
if s == '':
return s
else:
return rvs(s[1:])+s[0]
2.1.2 斐波那契数列
def f(n):
if n = 1 or n=2:
return 1
else:
return f(n-1) + f(n-2)
2.1.3 汉诺塔
count = 0
def hanoi(n,src,dst,mid):
global count
if n == 1:
print("{}:{}->{}".format(1,src,dst))
count += 1
else:
hanoi(n-1,src,mid,dst)
print('{}:{}->{}'.format(n,src,dst))
count += 1
hanoi(n-1,mid,dst,src)
hanoi(3,'A','C','B')
print(count)