python学习教程(十)--递归之汉诺塔

分析:

A:n个圆盘
B:0个圆盘
C:0个圆盘
目的:将A上的圆盘全部转移到C上,函数原型为Hanoi(n,a,b,c)

  1. 将A上层的n-1个转移B上,语句为:Hanoi(n-1,a,c,b)
  2. 把A最后一个转移到C上, 语句为:print(a+"-->"+c)
  3. 将B上的n-1转移到C上,结束。语句为:Hanoi(n-1,b,a,c)

另外当n=1时,为递归结束的条件,直接将A移动到C即可。
故函数为:

# -*- coding: utf-8 -*-
# 汉诺塔
def hanoi(n, a, b, c):
    if n == 1:
        print(a+'- ->'+c)
    else:
        hanoi(n-1, a, c, b)
        print(a+'- ->'+c)
        hanoi(n-1, b, a, c)

你可能感兴趣的:(python学习教程(十)--递归之汉诺塔)