3、算法入门_递归——汉诺塔问题

# 递归:
# 递归的两个特点:
# 调用自身
# 结束条件
# 修改递归最大次数
# import sys
# sys.setrecursionlimit(10000)
# 递归1: 先执行,后调用
def fun1(x):
if x > 0:
print(x)
fun1(x-1)

# 递归2 #先调用,后执行
def fun2(x):
if x > 0:
fun2(x-1)
print(x)

# 汉诺塔问题:
# n个盘子时:
# 1.把n-1个圆盘从A经过C移动到B
# 2.把第n个圆盘从A移动到C
# 3.把n-1个小圆盘从B经过A移动到C

# 当有三个盘子时 n=3
代码实现汉诺塔

def hannoi(n,a,b,c):
if n > 0: #结束条件
hannoi(n-1, a, c, b)
print("moving from %s to %s" % (a, c))
hannoi(n-1, b, a, c)
hannoi(3, 'A', 'B', 'C')

# 什么是汉诺塔:
# 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
# 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。
# 在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
# 64根柱子移动完毕之日,就是世界毁灭之时。
posted @ 2022-05-01 03:41  yu-ye  阅读(37)  评论(0)    收藏  举报