标签:os ar sp 问题 on c line ad new
问题:汉诺塔(港台:河内塔)是根据一个传说形成的数学问题:
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
每次只能移动一个圆盘;
大盘不能叠在小盘上面。
提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。
问:如何移?最少要移动多少次?
解答:(C#)
namespace hanoi_tower
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please insert a positive integer:");
string a = Console.ReadLine();
int n = Convert.ToInt32(a);
int count = 0;
Program step = new Program();
count = step.hanoi(‘A‘, ‘B‘, ‘C‘, n, count);
Console.WriteLine(count);
Console.ReadKey();
}
public int hanoi(char a,char b,char c,int n,int count){
if (n == 1)
{
Console.WriteLine("Move disk {0} from {1} to {2}.", n, a, c);
return 1;
}
else {
count=hanoi(a, c, b, n - 1,count);
Console.WriteLine("Move disk {0} from {1} to {2}",n,a,c);
count+=1;
count += hanoi(b, a, c, n - 1,count);
}
return count;
}
}
}
需要注意的有:1.Readline()返回值类型为string,需要转化为需要的type。
方法: string str=Console.ReadLine();//读入一行
int a = Convert.ToInt32(str);//第一种转换方式
int b = int.Parse(str);//第二种转换方式
int c;
int.TryParse(str, out c);//第三种转换方式
2.建立类的实例来引用method。
3.递归的初始化。
4.疑问:count得到的值能及时返回到函数中吗?标签:os ar sp 问题 on c line ad new
原文地址:http://my.oschina.net/smartman/blog/314724