Python基础课--第十节 函数2--作业

    技术2024-10-10  61

    作业

    汉诺塔游戏,现在有ABC三根柱⼦。要求:将A柱所有的圆盘放到C柱。在移动的过程中可以借助B柱。并且规定⼤圆盘不能放⼩圆盘上⾯,每次只能移动⼀个盘⼦。⽤递归的⽅式来解决汉诺塔问题

    分析:

    先标出 ABC三个盘子 如果只有一个盘子 A – C如果盘子大于等于2的情况下,我们总是可以看成2个盘子 一个是最下面的盘子和最上面的一个或者是所有的盘子 2.1 先把最上面的盘子 A-- B 2.2 把最下面的盘子 A–C 2.3 把B柱上的盘子 B–C def hannuotower(num,a,b,c): # 参数 num代表的是盘子 a b c分别代表的是A柱,B柱,C柱 # 第一个条件 基线条件 # 如果只有一个盘子 A -- C if num == 1: print('第1个盘子从',a,'->',c) else: # 第二个条件 递归条件 # num >= 2的情况 # 2.1 先把最上面的盘子 A-- B 借助C柱 hannuotower(num-1,a,c,b) # 2.2 把最下面的盘子 A--C print('第',num,'个盘从',a,'->',c) # 2.3 把B柱上的盘子 B--C hannuotower(num-1,b,a,c) hannuotower(3,'A','B','C') 结果 第1个盘子从 A -> C 第 2 个盘从 A -> B 第1个盘子从 C -> B 第 3 个盘从 A -> C 第1个盘子从 B -> A 第 2 个盘从 B -> C 第1个盘子从 A -> C
    Processed: 0.015, SQL: 12