汉诺塔问题C语言代码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
void hanoi( int n , char A , char B , char C )
{
/* 如果是一个盘子
直接将A柱子上的盘子从A移动到C
否则
先将A柱子上的n-1个盘子借助C移到B
直接将A柱子上的盘子从A移到C
最后将B柱子上的n-1个盘子借助A移到C */
if ( 1 == n)
{
printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n" , n , A , C ) ;
}
else
{
hanoi( n-1 , A ,C ,B );
printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n" , n , A, C) ;
hanoi( n -1 , B , A , C ) ; //继续进行汉诺塔函数
}
}
int main ()
{
char ch1 = 'A' ;
char ch2 = 'B' ;
char ch3 = 'C' ;
int n ;
printf("please input the number of plates wanting to move :\n") ;
scanf("%d" ,&n) ;
hanoi( n , 'A' , 'B' , 'C') ;
return 0 ;
}