汉诺塔的解决在程序里实际上是一个函数递归调用的过程。假设
A
上有
n
个盘子,求解的大
致想法是想把
A
最上面的
n-1
个盘子借助
C
挪到
B
,接着把
A
最下面的最大的盘子挪到
C
,再把
B
上的
n-1
个盘子借助
A
挪到
C
,完成。
首先先看
C#
里解决这个问题的代码:
using
System;
using
System.Collections.Generic;
using
System.Text;
namespace
Hanoi
{
class
Program
{
private
static
void
Move(
int
n,
char
A,
char
B,
char
C)
{
if
(n == 1)
{
Console
.WriteLine(
"Move disc: {0}--->{1}"
, A, C);
return
;
}
Move(n-1, A, C, B);//
把
A
最上面的
n-1
个盘子借助
C
挪到
B
Console
.WriteLine(
"Move disc: {0}--->{1}"
, A, C);//
把
A
最下面的最大的盘子挪到
C
Move(n-1, B, A, C);
//
把
B
上的
n-1
个盘子借助
A
挪到
C
}
static
void
Main(
string
[] args)
{
Console
.Write(
"
输入盘子数量
:"
);
int
n =
Convert
.ToInt16(
Console
.ReadLine());
Move(n,
'a'
,
'b'
,
'c'
);
Console
.Read();
}