汉诺塔问题递归求解

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Hanuota
{
    class Program
    {
        static void Main(string[] args)
        {
            count = 0;
            Hanuota(3, 'A', 'B', 'C');
            Console.WriteLine("----------------------------");
            count = 0;
            Hanuota(4, 'A', 'B', 'C');
            Console.WriteLine("----------------------------");
        }

        static int count = 0;

        static void Hanuota(int n, char from, char buffer, char to)
        {
            if (n==1)
            {
                Console.WriteLine("{0}:{1}=>{2}", ++count, from, to);
            } 
            else
            {
                Hanuota(n - 1, from, to, buffer);
                Hanuota(1, from, buffer, to);
                Hanuota(n - 1,buffer, from, to);
            }
        }
    }
    /*
    1:A=>C
    2:A=>B
    3:C=>B
    4:A=>C
    5:B=>A
    6:B=>C
    7:A=>C
    ----------------------------
    1:A=>B
    2:A=>C
    3:B=>C
    4:A=>B
    5:C=>A
    6:C=>B
    7:A=>B
    8:A=>C
    9:B=>C
    10:B=>A
    11:C=>A
    12:B=>C
    13:A=>B
    14:A=>C
    15:B=>C
    ----------------------------
    请按任意键继续. . . 
     */
}

 

def move(n,fromPos,buffer,to):

    if n==1:

        print('Move',n,'fromPos',fromPos,'to',to)

    else:

        move(n-1,fromPos,to,buffer)

        move(1,fromPos,buffer,to)

        move(n-1,buffer,fromPos,to)




if __name__ == '__main__':
    move(3,'A','B','C')
    print '-----------------------------------','\n'
    move(4,'A','B','C')
'''
D:\>python Hanuota.py
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'C', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'A')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'C')
-----------------------------------

('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'C', 'to', 'A')
('Move', 1, 'fromPos', 'C', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'A')
('Move', 1, 'fromPos', 'C', 'to', 'A')
('Move', 1, 'fromPos', 'B', 'to', 'C')
('Move', 1, 'fromPos', 'A', 'to', 'B')
('Move', 1, 'fromPos', 'A', 'to', 'C')
('Move', 1, 'fromPos', 'B', 'to', 'C')
'''

 

posted @ 2018-01-31 08:51  sky20080101  阅读(137)  评论(0)    收藏  举报