C++ 需要帮助了解这个c++;代码计算
这段代码是如何计算的?它为我提供了河内塔问题的正确解决方案,但我不理解评估的顺序C++ 需要帮助了解这个c++;代码计算,c++,towers-of-hanoi,C++,Towers Of Hanoi,这段代码是如何计算的?它为我提供了河内塔问题的正确解决方案,但我不理解评估的顺序 void moveDisks(int n, const char* pegA, const char* pegB, const char* pegC) { if (n == 0) { return; } moveDisks(n-1, pegA, pegC, pegB); std::cout << "Move disk from " <&l
void moveDisks(int n, const char* pegA, const char* pegB, const char* pegC)
{
if (n == 0)
{
return;
}
moveDisks(n-1, pegA, pegC, pegB);
std::cout << "Move disk from " << pegA << " to " << pegC << std::endl;
moveDisks(n-1, pegB, pegA, pegC);
}
void moveDisks(int n,const char*pegA,const char*pegB,const char*pegC)
{
如果(n==0)
{
返回;
}
移动圆盘(n-1,pegA,pegC,pegB);
std::cout注释绝对正确,但除此之外,这里还有一个伪代码/调用堆栈/输出,可能有助于概念化它:
moveDisks(4, "A", "B", "C");
moveDisks(3, "A", "C", "B");
moveDisks(2, "A", "B", "C");
moveDisks(1, "A", "C", "B");
Move disk from A to B
Move disk from A to C
moveDisks(1, "B", "A", "C");
Move disk from B to C
Move disk from A to B
moveDisks(2, "C", "A", "B");
moveDisks(1, "C", "B", "A");
Move disk from C to A
Move disk from C to B
moveDisks(1, "A", "C", "B");
Move disk from A to B
Move disk from A to C
moveDisks(3, "B", "A", "C");
moveDisks(2, "B", "C", "A");
moveDisks(1, "B", "A", "C");
Move disk from B to C
Move disk from B to A
moveDisks(1, "C", "B", "A");
Move disk from C to A
Move disk from B to C
moveDisks(2, "A", "B", "C");
moveDisks(1, "A", "C", "B");
Move disk from A to B
Move disk from A to C
moveDisks(1, "B", "A", "C");
Move disk from B to C
如果您阅读有关递归的书籍或开始使用注释建议的调试器(您应该这样做),您将经常看到类似的图表.使用调试器并逐步完成代码…阅读和;这将有助于您理解此代码的工作原理。这段代码也让我大吃一惊,当它被教给我时。算法适合模型的难以置信的能力,以及适合算法的语言。