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

汉诺塔 Tower of Hanoi

时间:2015-08-14 19:08:22      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:汉诺塔   tower of hanoi   递归   c语言   

        如果柱子标为A,B,C,要由A搬至C,在只有一个盘子时,就将它直接搬至C;当有两个盘子,就将B作为辅助柱;如果盘数超过2个,将第二个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B、A->C、B->C这三个步骤,而被遮起来的部分,其实就由方程的递归处理。

技术分享

代码如下:


#include <stdio.h>

void hanoi(int n,char A,char B,char C){
	if(n == 1){
		printf("Move sheet %d from %c to %c\n",n,A,C);
	}
	else{
		hanoi(n-1,A,C,B);
		printf("Move sheet %d from %c to %c\n",n,A,C);
		hanoi(n-1,B,A,C);
	}
} 

int main(){
	int n;
	printf("请输入盘数:");
	scanf("%d",&n);
	hanoi(n,'A','B','C');
	return 0;
}

运行结果:
技术分享

版权声明:本文为 iflei 原创文章,转载请注明出处。

汉诺塔 Tower of Hanoi

标签:汉诺塔   tower of hanoi   递归   c语言   

原文地址:http://blog.csdn.net/iflei/article/details/47665479

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