版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oqqENvY12/article/details/80860256
汉诺塔的移动可以使用递归函数非常简单地实现
python
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# 编写move(n,a,b,c)函数,它接收参数n,表示三根柱子A、B、C中第一根柱子A上盘子的数量,然后打印出所有盘子从 A借助B移动到C的办法。
def move(n,a,b,c) :
if n==1 :
print(a,'-->',c)
else :
'''
忽略最下面的一个,把上面的从A移动到B
'''
move(n-1, a, c, b)
'''
把最下面的一个移到C
'''
move(1, a, b, c)
'''
把之前移到B的移到C
'''
move(n-1, b, a, c)
c++
#include <iostream>
#include <cstdio>
using namespace std;
void hannoi(int n, char A, char B, char C)
{
if (n == 1)
{
cout << A << "-->" << C << endl;
}
else
{
hannoi(n - 1, A, C, B);
cout << A << "-->" << C << endl;
hannoi(n - 1, B, A, C);
}
}
int main()
{
int n;
cin >> n;
hannoi(n, 'A', 'B', 'C');
system("pause");
return 0;
}