• [Python]递归汉诺塔


    move_count  =  0 ; 
    def hanoi(n,src,buffer,dst):
        'n:需移动的盘子个数,src:盘子原来的位置,buffer:盘子可临时使用的位置,dst:盘子的目标移动位置'
        global move_count;
        if n < 1:
            print('输入有误');
            return None;
        elif n==1:
            print(src + '----->' + dst);
            move_count += 1;
        else:
            hanoi(n-1,src,dst,buffer);
            hanoi(1,src,buffer,dst);
            hanoi(n-1,buffer,src,dst);
    
    
    move_count  = 0 ;
    hanoi(5,'A','B','C');
    print('move_steps = ',move_count);
    print(hanoi.__doc__);

      

    运行结果(Python3.7):

    A----->C
    A----->B
    C----->B
    A----->C
    B----->A
    B----->C
    A----->C
    A----->B
    C----->B
    C----->A
    B----->A
    C----->B
    A----->C
    A----->B
    C----->B
    A----->C
    B----->A
    B----->C
    A----->C
    B----->A
    C----->B
    C----->A
    B----->A
    B----->C
    A----->C
    A----->B
    C----->B
    A----->C
    B----->A
    B----->C
    A----->C
    move_steps = 31
    n:需移动的盘子个数,src:盘子原来的位置,buffer:盘子可临时使用的位置,dst:盘子的目标移动位置

    ~不再更新,都不让我写公式,博客园太拉胯了
  • 相关阅读:
    20180530
    vue路由配置出错,导致页面跳转会有闪屏问题
    20180528
    vuecli+ivew项目搭建
    centos6安装mysql
    华为云服务ESC
    centos6安装nginx
    国产操作系统aarch64编译filebeat
    Python常见问题
    Git
  • 原文地址:https://www.cnblogs.com/alimy/p/10373071.html
Copyright © 2020-2023  润新知