nrrt.net
当前位置:首页 >> 大一汉诺塔C语言问题,求代码 >>

大一汉诺塔C语言问题,求代码

#include int step=0; void move(char s, char t, int d){ int i,j; step++; printf("第 %d 步: %c->%c\n",step,s,t); } void hanoi(char a, char b, char c, int n){ if(n==1){ move(a,b,n); }else{ hanoi(a,c,b,n-1); move(a,b,n); hanoi(c,b,...

#include void move(char x,char y) { printf("%c-->%c\n",x,y); } void hanoi(int n,char one ,char two,char three) { if(n==1) move(one,three); else { hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } main() {...

hanoi(n-1,a,c,b); /* 第一步:把A上部的n-1个盘子,借助C,先移动到B */move(n,a,c); /* 第二步:把A最底部的第n号盘子移动到C */hanoi(n-1,b,a,c); /* 第三步:把第一步移到B的n-1个盘子借助A移动到C *//************************************...

假设三根柱子A/B/C,要从A移动到B,有n个盘子,那么可以设函数 hanoi(int n,char A ,char B,char C); 其中:n是盘子数量,A,B,C是柱子名字 先考虑一个盘子的情况 一个盘子的时候,显然,A直接放到B就可以了 多个盘子的情况 如果多个盘子,那么不...

hanoi函数的功能是把第n个盘子和上面的所有盘子都移动到另一个柱子上,而move才是只移动一个盘子

把n歌圆盘从a挪到c 当n = 1 的时候 直接诺就好了 麻烦的是 当n>1 的时候 这个时候你想要把n个圆盘从a挪到c 首先呢 要把上面的 n -1 个圆盘挪到b 再把最低下的1个挪到c 然后再把b柱上面的n-1个盘子挪到c 回来再看你的程序 就很明显了 f(n, a, b, ...

根据你的程序 当n=3 不满足n=1条件 所以走else 然后执行 hanoi(n-1,one,three,two); // 2 A C B move(one,three); //调用move函数 输出 c-->B hanoi(n-1,two,one,three); // 1 A B C 至于你说为什么此时n=1不执行if(n==1)是因为你的程序if和else...

hanoi(m,'A','B','C');这个算法的目的就是将m个积木块,从'A‘柱经过'B'柱移到'C‘柱上 给你照着代码讲吧。 void hanoi(int n,char one ,char two,char three) { void move(char x,char y);//声明打印函数 if(n==1) //如果只有一个积木块,直接将...

int game2()要改为int main()后才可编译运行: #include #include #define CSZL 10 #define FPZL 10 typedef struct hanoi { int n; char x,y,z; }hanoi; typedef struct Stack //定义栈结点 { hanoi *base,*top; int stacksize; }Stack; int In...

递归算法是我前些天写的,非递归是刚才找的,里面含递归和非递归。 递归算法: #include //递归求汉诺塔问题 void hanoi(int n, char A, char B, char C, int *time) { if (n>=1) { hanoi(n-1, A, C, B, time); move(A, C); (*time)++; hanoi(n-...

网站首页 | 网站地图
All rights reserved Powered by www.nrrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com