递归函数的练习,汉诺塔问题的程序实现(递归).pdfVIP

  • 3
  • 0
  • 约2.8千字
  • 约 2页
  • 2023-12-16 发布于中国
  • 举报

递归函数的练习,汉诺塔问题的程序实现(递归).pdf

递归函数的练习,汉诺塔问题的程序实现(递归)

1.汉诺塔是由三根杆⼦A,B,C组成的。A杆上N个(N1)穿孔圆盘,盘的尺⼨由下到上依次变⼩。要求按下列规则将所有圆盘移⾄C杆:

每次只能移动⼀个圆盘;⼤盘不能叠在⼩盘上⾯。提⽰:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述

两条规则。问:如何移?最少要移动多少次?汉诺塔是根据⼀个传说形成的⼀个问题:

有三根杆⼦A,B,C。A杆上N个(N1)穿孔圆盘,盘的尺⼨由下到上依次变⼩。要求按下列规则将所有圆盘移⾄C杆:

每次只能移动⼀个圆盘;

⼤盘不能叠在⼩盘上⾯。

提⽰:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。

问:如何移?最少要移动多少次?

1classProgram

2{

3staticinti=1;

4staticvoimove(intn,charfrom,charto)//将编号为n的盘⼦由from移动到to

5{

6Console.WriteLine(第{0}步:将{1}号盘⼦{2}{3}\n,i++,n,from,to);

7}

8staticvoihanoi(intn,charfrom,chardenpend_on,charto)//将n个盘⼦由初始塔移动到⽬标塔(利⽤借⽤塔)

9{

10if(n==1)

11move(1,from,to);//只有⼀个盘⼦是直接将初塔上的盘⼦移动到⽬的地

12else

13{

14hanoi(n-1,from,to,denpend_on);//先将初始塔的前n-1个盘⼦借助⽬的塔移动到借⽤塔上

15move(n,from,to);//将剩下的⼀个盘⼦移动到⽬的塔上

16hanoi(n-1,denpend_on,from,to);//最后将借⽤塔上的n-1个盘⼦移动到⽬的塔上

17}

18}

19staticvoiMain(string[]args)

20{

21Console.Write(请输⼊盘⼦的个数:\n);

22intn;

23n=Convert.ToInt32(Console.ReadLine());

24charx=A,y=B,z=C;

25Console.Write(盘⼦移动情况如下:\n);

26hanoi(n,x,y,z);

27

28

29}

运⾏结果举例:

2.猴⼦吃桃的问题

1staticvoiMain(string[]args)

2{

3inta=Taozi(1);

4Console.WriteLine(a);

5

6}

7staticintTaozi(intday)

8{

9if(day==7)

10{

11return1;

12}

13intn=(Taozi(day+1)+1)*2;

14returnn;

15

16}

3.做梦

1staticvoiMain(string[]args)

2{

3//递归函数

4//做梦

5

文档评论(0)

1亿VIP精品文档

相关文档