--- 递归三定律 --- 1. 基本结束条件,解决最小规模问题 2. 缩小规模,向基本结束条件演进 3. 调用自身来解决已缩小规模的相同问题
递归实例:汉诺塔问题 n 个盘子时: 1. 把 n-1 个圆盘从 A 经过 C 移动到 B 2. 把第 n 个圆盘从 A 移动到 C 3. 把 n-1 个小圆盘从 B 经过 A 移动到 C
def hanoi(n, a, b, c):
if n > 0:
hanoi(n - 1, a, c, b)
print(f'moving from {a} to {c}')
hanoi(n-1, b, a, c)
hanoi(3, 'A', 'B', 'C')
递归实例:进制转换 整数转换为十六以下任意进制
def toStr(n, base):
"""递归 - 整数转换为十六以下任意进制"""
char = '0123456789ABCDE'
if n < base:
return char[n]
else:
return toStr(n // base, base) + char[n % base]