测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A43626. 设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64 片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。有三个单字符字符串和一个整数。三个字符表示三个杆子的编号,整数为盘子的数目。根据上述计算规则,补…

填空题 困难

题目描述

设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵

天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64 片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。有三个单字符字符串和一个整数。三个字符表示三个杆子的编号,整数为盘子的数目。

根据上述计算规则,补全下列代码。

函数名:hannota(n,a,b,c)

参数表:n -- 正整数表示盘子数,a --a 杆子,b --b 杆子,c --c 杆子。

返回值:移动路径。

示例:n=3,返回:

A --> C

A --> B

C --> B

A --> C

B --> A

B --> C

A --> C

def hannota(n,a,b,c):

    if n == 1:

        print(a ,"-->", c)

        return None

    if n == 2:

        print(a,"-->",b)

        Print( ① )

        print(b,"-->",c)

        return None

    Hannota( ② )

    print(a,"-->",c)

    Hannota( ③ )

a = "A"

b = "B"

c = "C"

n =int(input('请输入黄金圆盘数量 n:'))

hannota(n,a,b,c)

参考答案

def hannota(n,a,b,c): if n == 1: print(a ,"-->", c) return None if n == 2: print(a,"-->",b) print(a,"-->",c) print(b,"-->",c) return None hannota(n-1,a,c,b) print(a,"-->",c) hannota(n-1,b,a,c) a = "A" b = "B" c = "C" n =eval(input('请输入黄金圆盘数量 n:')) hannota(n,a,b,c)

答案解析

①a, "-->" ,c 或等效答案;(3 分)

② n-1,a,c,b 或等效答案;(3 分)

③ n-1,b,a,c 或等效答案;(4 分)

上一题 下一题