lluvia900125 2022-10-15 22:31 采纳率: 45%
浏览 24
已结题

汉诺塔递归,python

汉诺塔递归错解,想知道错误原因在哪儿
#我把每个柱子上盘子当作一个stack,hanoi(s1,s2,s3)就是把stack1里的通过stack2移动到stack3里。
# hanoi(s1[1:],s3,s2) 是把stack1除了第一层的盘子通过stack3移动到stack2

def hanoi(s1,s2,s3): 
    h = len(s1)
    if h >= 1:
        hanoi(s1[1:],s3,s2) 
        s3.append(s1.pop())  
        hanoi(s2,s1,s3) 
    print(f"{s1}{s2}{s3}") 
运行结果及报错内容
为什么我这个想法实现不了呢,哪里出错了呢
  • 写回答

1条回答 默认 最新

  • honestman_ 2022-10-15 22:40
    关注
    
    i = 1
    def move(pfrom, pto):
        global i
        print("第%d步:%s ---> %s" % (i, pfrom, pto))
        i += 1
     
    def hanoi(n, a, b, c):
        if n == 1:
            move(a, c)
        else:
            hanoi(n - 1, a, c, b)
            move(a, c)
            hanoi(n - 1, b, a, c)
     
    n = int(input("请输入盘数:"))
    print("具体走法步骤如下:")
    hanoi(n, "A", "B", "C")
    print("一共需走%d步" % (i - 1))
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月15日
  • 创建了问题 10月15日

悬赏问题

  • ¥30 计算机硬件实验报告寻代
  • ¥15 51单片机写代码,要求是图片上的要求,请大家积极参与,设计一个时钟,时间从12:00开始计时,液晶屏第一行显示time,第二行显示时间
  • ¥15 用C语言判断命题逻辑关系
  • ¥15 原子操作+O3编译,程序挂住
  • ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。
  • ¥15 在yolo1到yolo11网络模型中,具体有哪些模型可以用作图像分类?
  • ¥15 AD9910输出波形向上偏移,波谷不为0V
  • ¥15 淘宝自动下单XPath自动点击插件无法点击特定<span>元素,如何解决?
  • ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘
  • ¥15 抖音直播广场scheme