提高模块的可复用性:交流越少越清晰,可复用性越高
函数递归实例解析
递归问题只注重链条,把问题拆解为n与n-1的关系
1. 字符串反转 s[ : : -1]
函数+分支结构:递归链条,递归基例
# 字符串反转
def rvs(s):
if s == "":
return s
else:
return rvs(s[1:]+s[0])
2. 斐波那契数列 ![](https://img-blog.csdnimg.cn/20210824095104362.png)
def f(n):
if n == 1 or n == 2:
return 1
else:
return f(n-1) + f(n-2)
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) # 把n-1个搬到过渡圆盘
print("{}:{}->{}".format(n, src, dst))
#把最后一个搬到目标柱子
count += 1
hanoi(n - 1, src, mid, dst)# 把n-1个从过渡圆盘搬到目标圆盘
这章好难哦 听得迷迷糊糊的 回头写到实例时再来补充