C语言程序设计(汉诺塔问题)_汉诺塔问题c程序
C语言程序设计(汉诺塔问题)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“汉诺塔问题c程序”。
C语言程序设计(汉诺塔设计)
#include void main(){void tian(int n,int x,int y,int z);
/*函数声明*/
int m;printf(“please enter the number of diskes:n”);scanf(“%d”,&m);printf(“the step of move %d diskes :”,m);tian(m,'A','B','C');
} void tian(int n,int x,int y,int z)
/*当我选定这一行的时候 然后单击组间选择调试
run to_
发现不管输入的x值是多少
ABC的值都是65 66 67
后来才发现原来是他们所代表的十进制的值*/ {void move(int x,int y);
if(n==1)move(x,z);
/*这里是递归函数的结束条件*/ else
{tian(n-1,x,z,y);move(x,y);
tian(n-1,y,x,z);} } void move(int x, int y)
/*
定义move函数用来显示移动的路线*/ {printf(“%c——>%cn”,x,y);
} /*汉洛塔问题:如果有N个盘子
那么可以简化为n-1个盘子和一个盘子来处理,只要先把上面的n-1个盘子从A——>B
把第n个盘子由A——>C 再把n-1个盘子由B——>C 即可;
n-1盘子
那么可以简化为n-2个盘子和一个盘子来处理
只要
把上面的n-2个盘子从A——>B
把第n个盘子由A——>C 再把n-1个盘子由B——>C 即可;
n-3盘子
那么可以简化为n-3个盘子和一个盘子来处理
只要
把上面的n-4个盘子从A——>B
把第n个盘子由A——>C 再把n-1个盘子由B——>C 即可;
N-4
.....4个盘子
那么可以简化为3个盘子和一个盘子来处理
只要 把上面的3个盘子有a 到b
把第4个盘子由a到c 再把上面的三个盘子由b到c;
3个盘子
可以简化为。。*/