汉诺塔实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 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++

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;
}

python

猜你喜欢

转载自blog.csdn.net/oqqENvY12/article/details/80860256