zoukankan      html  css  js  c++  java
  • 汉诺塔递归算法

    # -*- coding:utf-8 -*-
    # author : Keekuun
    
    """
    有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
    
    每次只能移动一个圆盘;
    
    大盘不能叠在小盘上面。
    
    """
    
    time = 0
    
    
    def mov(n, a, b, c):
        global time
        # 当只有一个圆盘时
        if n == 1:
            print(a, '-->', b)
            time += 1
        # 当有n个圆盘时
        else:
            # n = (n-1)+1,先移动n-1个圆盘到B
            mov(n - 1, a, c, b)
            # 把最大的圆盘1直接移到C
            mov(1, a, b, c)
            # 再把n-1个圆盘从B移到C
            mov(n - 1, b, a, c)
        time -= 1 return time print(mov(1, 'A', 'B', 'C')) print('*'*10) print(mov(2, 'A', 'B', 'C')) print('*'*10) print(mov(3, 'A', 'B', 'C')) print('*'*10) print(mov(4, 'A', 'B', 'C'))

      输出

    A --> B
    1
    **********
    A --> C
    A --> B
    B --> A
    3
    **********
    A --> B
    A --> C
    C --> A
    A --> B
    B --> C
    B --> A
    A --> B
    7
    **********
    A --> C
    A --> B
    B --> A
    A --> C
    C --> B
    C --> A
    A --> C
    A --> B
    B --> A
    B --> C
    C --> B
    B --> A
    A --> C
    A --> B
    B --> A
    15

    明月装饰了你的窗子,你装饰了他的梦。
  • 相关阅读:
    HDU
    HDU
    (4)数据--相似性与相异性
    (3)数据--操作
    (2)数据--基本概念
    五、按生命周期划分数据(二)
    五、常用数据类型(一)
    四、坏耦合的原因与解耦(三)
    四、强化耦合(二)
    四、初识耦合(一)
  • 原文地址:https://www.cnblogs.com/zkkysqs/p/9387560.html
Copyright © 2011-2022 走看看