汉诺塔问题肯定要用递归嘛!
让我告诉大家:
//从initneedle移动n个盘子到endneedle,让tempneedle做中间储存
void hanoi(int n,const string&initneedle,const string&endneedle,const string&tempneedle)
{
//终止条件:只移动一个盘子
if(n==1)
cout<<"move"<<initneedle<<"to"<<endneedle<<eddl;
else {
//从initneedle到tempneedle移动n-1个盘子,用endneedle进行临时储存
hanoi(n-1,initneedle,tempneedle,endneedle);
//最大的盘子到endneedle
cout<<"move"<<initneedle<<"to"<<endneedle<<endl;
//从tempneedle到endneedle移动n-1个盘子,用initneedle进行临时储存
hanoi(n-1,tempneedle,endneedle,initneedle);
}
}
如果对递归理解不够,那末你将会很难理解这个算法.