c语言编程问题,求解。(汉诺塔) 5

c语言编程问题,求解。(汉诺塔)谢谢... c语言编程问题,求解。(汉诺塔)谢谢 展开
 我来答
听不清啊
高粉答主

2017-04-10 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include <stdio.h>

void hanoi(int n,char a,char b,char c)

{if(n>1)hanoi(n-1,a,c,b);

printf("%d from %c to %c\n",n,a,c);

if(n>1)hanoi(n-1,b,a,c);

}

int main()

{int n;

scanf("%d",&n);

hanoi(n,'A','B','C');

return 0;

}

伪笑掩饰忧伤
2017-04-10 · TA获得超过285个赞
知道小有建树答主
回答量:202
采纳率:83%
帮助的人:67.8万
展开全部

恩 昨天用 python 写的

c语言版本

#include <stdio.h>  
                      //第一个塔为初始塔,中间的塔为借用塔,最后一个塔为目标塔  
int i=1;//记录步数  
void move(int n,char from,char to) //将编号为n的盘子由from移动到to  
{printf("第%d步:将%d号盘子%c---->%c\n",i++,n,from,to);  
}  
void hanoi(int n,char from,char denpend_on,char to)//将n个盘子由初始塔移动到目标塔(利用借用塔)  
{  
    if (n==1)  
    move(1,from,to);//只有一个盘子是直接将初塔上的盘子移动到目的地  
    else  
    {  
      hanoi(n-1,from,to,denpend_on);//先将初始塔的前n-1个盘子借助目的塔移动到借用塔上  
      move(n,from,to);              //将剩下的一个盘子移动到目的塔上  
      hanoi(n-1,denpend_on,from,to);//最后将借用塔上的n-1个盘子移动到目的塔上  
    }  
}  
void main()  
{  
     printf("请输入盘子的个数:\n");  
     int n;  
     scanf("%d",&n);  
     char x='A',y='B',z='C';  
     printf("盘子移动情况如下:\n");  
     hanoi(n,x,y,z);  
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式