vc++编的汉诺塔计算,他的算法是什么?
补充:#include"iostream.h"
void hanota(short int a,short int b,short int c,short int d);
void hanota(short int a,short int b,short int c,short int d){
if(a==1)
cout<<b<<"->"<<d<<"\n";
else{
hanota(a-1,b,d,c);
cout<<b<<"->"<<d<<"\n";
hanota(a-1,c,b,d);
}
}
void main(){
short int a;
cout<<"层数:";
cin>>a;
cout<<"步骤:"<<"\n";
hanota(a,1,2,3);
}
求解计算式。
追问:我的意思是要代码具体运行流程
hanota(a-1,b,d,c);
cout<<b<<"->"<<d<<"\n";
hanota(a-1,c,b,d);
这一段是神马意思,求详解
答案:就是递归,中间那句是移动最底层那块最大的盘从原柱子搬到目标柱子,上面那句是一个汉诺塔,表示在这之前把除最大以外的盘从原柱子搬到过渡柱子,最后一句就是再把这堆盘从过渡柱子搬到目标柱子,然后就完了。
其他:算法是什么?
递归
上一个:vc ++ 编译器 编译时出现 cannot open file Debug/grame.exe 是什么是意思
下一个:看这个VC ++ 2010 程序怎么不能编译啊,