Python实现递归
Python实现递归
def fact(n):
if n == 0:
return 1
else:
return n * fact(n-1)
尾递归
def print_num_recursive(n):
if n > 0:
print_num_recursive(n-1)
print(n)
def print_num_recursive_revserve(n):
if n > 0:
print(n)
print_num_recursive_revserve(n-1) # 尾递归
汉诺塔问题
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 但是有两个条件, 每次只能移动一个圆盘、大盘不能叠在小盘上面
def hanoi_move(n, source, dest, intermediate):
if n >= 1: # 递归出口,只剩一个盘子
hanoi_move(n-1, source, intermediate, dest)
print("Move %s -> %s" % (source, dest))
hanoi_move(n-1, intermediate, dest, source)
hanoi_move(3, 'A', 'C', 'B')
# 输出,建议你手动模拟下。三个盘子 A(Source), B(intermediate), C(Destination)
"""
Move A -> C
Move A -> B
Move C -> B
Move A -> C
Move B -> A
Move B -> C
Move A -> C
"""