【发布时间】:2017-08-02 02:40:57
【问题描述】:
我目前正在创建一个程序,显示解决河内难题的每一步。我需要显示每个圆盘的位置,从开始位置开始的每一步都显示为(A,A,A)。 A = 第一个挂钩,B = 第二个挂钩,C = 第三个挂钩。我有输出动作但不输出位置的程序。我如何将职位落实到计划中?到目前为止,这是我的代码以及我的输出和一个图表,显示了每次移动后的位置。盘数是 const 3。
#include <iostream>
using namespace std;
void moveDiscs(int num,int fromPeg,int toPeg, int tempPeg){;
char position;
if(num > 0){
moveDiscs(num-1,fromPeg,tempPeg,toPeg);
cout << "Move a disc from peg "<<fromPeg<<" to peg "<<toPeg<<endl;
moveDiscs(num-1,tempPeg,toPeg,fromPeg);
}
}
int main() {
const int from_peg = 1;
const int to_peg = 3;
const int temp_peg = 2;
moveDiscs(3,from_peg,to_peg,temp_peg);
return 0;
}
【问题讨论】:
-
我怀疑这可以在没有对您的代码进行重大添加的情况下完成。递归解决方案是在解决方案的每个级别上,函数都认为自己正在解决一个完整的问题。因此,递归调用所代表的子问题无法了解整体问题,也无法按照您描述的方式跟踪光盘。
-
请看我的解决方案
标签: c++ computer-science