Python递归实现汉诺塔游戏
汉诺塔(Tower of Hanoi)是一种经典的数学难题。它由三个塔 A、B、C 和一堆大小不等的圆盘组成,每个圆盘都穿过一个中央的杆。开始时,所有的盘子都按由大到小的顺序堆叠在塔 A 上。任务是将整个塔从 A 移动到 C,每次只能移动一个圆盘,并且不能将大盘子放在小盘子上面。
Python 递归实现汉诺塔游戏的代码如下:
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) n = int(input('输入汉诺塔层数:')) hanoi(n, 'A', 'B', 'C')
在这段代码中,定义了 hanoi 函数,其中 n 是汉诺塔的层数,a、b、c 分别表示三个塔。如果 n 等于 1,表示只有一层,直接从 a 塔移动到 c 塔;否则,递归调用 hanoi 函数把 n-1 层从 a 塔移动到 b 塔,再把第 n 层从 a 塔移动到 c 塔,最后把 n-1 层从 b 塔移动到 c 塔。
在主函数中,首先让用户输入汉诺塔的层数,然后调用 hanoi 函数进行移动操作。
如果要使用字符串作为范例,可以把塔的名称改成字符串,如下所示:
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) n = int(input('输入汉诺塔层数:')) hanoi(n, 'pidancode.com', 'Python', '皮蛋编程')
这样就可以使用“pidancode.com”、“Python”、“皮蛋编程”作为塔的名称了。
相关文章