说得好可以追加分数,谢谢了!
我想问的是递归运算的流程是怎么样的?请详讲!谢谢!
主要想问下面程序中:
hanio(num-1,aa,cc,bb);//这句是什么意思?里面的参数是代表什么?什么意思?
cout<<"移动第"<<num<<"的盘 从"<<aa<<"柱到"<<cc<<"柱\n";
hanio(num-1,bb,aa,cc);//这句是什么意思?里面的参数又是代表什么?什么意思?
//下面是一个河内塔问题。
#include<iostream.h>
void hanio(int num,char aa,char bb,char cc)
{
if(num>0)
{
hanio(num-1,aa,cc,bb);
cout<<"移动第"<<num<<"的盘 从"<<aa<<"柱到"<<cc<<"柱\n";
hanio(num-1,bb,aa,cc);
}
return;
}
void main()
{
int num;
cout<<"请输入共需移动多少个盘(>0):";
cin>>num;
hanio(num,'A','B','C');
return;
}
递归的思想是逐渐化大为小,并自身循环。就像剥洋葱,最终把问题层层分解,落脚在小问题上。
这是个汉诺塔的问题,实现了汉诺塔问题的步骤解析。(就是说它会输出你应如何放盘) void hanio(int num,char aa,char bb,char cc)这句话是在 定义函数。hanio是函数名,里面的是函数参数,分别是整型和三个字符型。 我来详细解答吧。唉,好困了
void hanio(int num,char aa,char bb,char cc)//定义函数
{
if(num>0)
{
hanio(num-1,aa,cc,bb);
cout<<"移动第"<<num<<"的盘 从"<<aa<<"柱到"<<cc<<"柱\n";
hanio(num-1,bb,aa,cc);
}
return;
}//有“num”个盘,三个柱(aa,cc,bb).没执行一次函数,num就自减1,输出走法。注意,aa,bb,cc在执行时是变动的,以此实现不同走法。你注意到他的循环了吗?知道num减为0才停止。哈哈,这就是神奇的递归!
void main()//这是主函数,要先看主函数,才明白在干什么
{
int num;
cout<<"请输入共需移动多少个盘(>0):"; //这是汉诺塔的级别了
cin>>num;
hanio(num,'A','B','C');//函数声明
return 0;
}
楼主觉得满意就采纳吧,我在完成任务,感谢你的支持!