递归汉诺塔C#实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _235HanoiTower汉诺塔递归CSharp版
{
class Program
{
static void Main(string[] args)
{
Hanoi(3, 'A', 'B', 'C');//3个盘子(可任意改几个盘子) ABC三个柱子
Console.ReadKey();
}
public static void Hanoi(int n, char a, char b, char c)
{
if (n == 1)
{
Move(1, a, c);//如果是1个盘子 直接从A 到C
}
else
{
Hanoi(n - 1, a, c, b);//n-1 借 C 移B
Move(n, a, c);//n 移C
Hanoi(n - 1, b, a, c);//n-1 借 A 移C
}
}
static int i = 0;//记录第几次怎么移
public static void Move(int n, char a, char c)
{
i++;
Console.WriteLine("第{0}步\t将{1}号盘\t从{2}\t移到{3}",i, n, a, c);
}
}
}