码迷,mamicode.com
首页 > 其他好文 > 详细

汉诺塔问题

时间:2017-06-30 21:03:20      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:c语言   问题   har   递归算法   char   算法   汉诺塔   printf   span   

技术分享

汉诺塔问题:

如果只有一个盘子,则直接将该盘从A柱移动到C柱。

如果有n个盘子,则可分为以下三步:

1.将n-1个盘子从A柱借助C柱移动到B柱。

2.将第n个盘子从A柱移动到C柱。

3.将B柱上的n-1个盘子移动到C柱上。

c语言递归算法为:

 1 int i = 1;//记录步数 
 2 void move(int n, char A, char C){
 3   printf(第"%d"步,将第"%d"号盘子从 "%c" -> "%c", i++, n, A, C);
 4 }
 5 void Hanoi(int n, char A, char B, char C){
 6   if(n == 1) move(1, A, C);
 7   Hanoi(n-1, A, C, B);
 8   move(n, A, C);
 9   Hanoi(n-1, B, A, C);
10 }

步数为:2^n-1步。

汉诺塔问题

标签:c语言   问题   har   递归算法   char   算法   汉诺塔   printf   span   

原文地址:http://www.cnblogs.com/promise123/p/7100531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!