递归实例

1. 汉诺塔

def hanoi(n, a, b, c):
    """
    汉诺塔:最终目的是把a柱子上的盘子移动到c上,b作为缓冲
    :param n: 一共拥有的块数
    :param a: 原柱
    :param b: 缓冲
    :param c: 目的柱
    :return:
    """
    if n == 1:
        # 一个时直接移动到目的柱
        print(a, '-->', c)
    else:
        # 先想办法把n-1个从a移动到b
        hanoi(n - 1, a, c, b)
        # 第一次绝对是从a移动到c
        print(a, '-->', c)
        # 再想办法把n-1个从b移动到c
        hanoi(n - 1, b, a, c)
# 调用此递归函数
hanoi(5, 'A', 'B', 'C')
posted @ 2020-03-20 16:52  lvweihe  阅读(183)  评论(0编辑  收藏  举报