大佬教程收集整理的这篇文章主要介绍了C++汉诺塔递归算法完全攻略,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
To move n disks from peg 1 to peg 3,using peg 2 as a temporary peg: If n > 0 Then Move n-1 disks from peg 1 to peg 2,using peg 3 as a temporary peg. Move a disk from peg 1 to peg 3. Move n-1 disks from peg 2 to peg 3,using peg 1 as a temporary peg. End If现在来编写一个实现这个解决方案的函数,打印解决游戏的一系列动作。以下代码将使用名称而不是数字来描述柱子。该函数的目标是使用临时柱子(peg3)将一叠圆盘从源柱子(peg1)移动到目标柱子(peg2)。以下是函数的代码:
void moveDisks(int n,String source,String dest,String temp) { if (n > 0) { //将n-1圆盘从源柱子移动到临时柱子 //使用目标柱子作为临时柱子 moveDisks(n - 1,source,temp,dest); //将圆盘从源柱子移动到目标柱子 cout << "Move a disk from " << source << " to " << dest << endl; //将n-1圆盘从临时柱子移动到目标柱子 //使用源柱子作为临时柱子 moveDisks(n - 1,dest,sourcE); } }基本情况在 n = 0 时发生,并且没有要移动的圆盘。在这种情况下,函数调用将不做任何事情返回。下面的程序演示了该函数。
// This program displays a solution to the towers of Hanoi game. #include <iostream> #include <String> using namespace std; // Function prototype void moveDisks(int,String,String); int main() { // Play the game with 3 disks moveDisks (3,"peg 1","peg 3","peg 2"); cout << "All the disks have been moved!"; return 0; } void moveDisks(int n,String temp) { if (n > 0) { // Move n-1 disks from source to temp // using dest as the temporary peg moveDisks(n-1,dest); // Move a disk from source to dest cout << "Move a disk from " << source << " to " << dest << endl; // Move n-1 disks from temp to dest // using.source as the temporary peg moveDisks(n-1,sourcE); } }程序输出结果:
Move a disk from peg 1 to peg 3
Move a disk from peg 1 to peg 2
Move a disk from peg 3 to peg 2
Move a disk from peg 1 to peg 3
Move a disk from peg 2 to peg 1
Move a disk from peg 2 to peg 3
Move a disk from peg 1 to peg 3
以上是大佬教程为你收集整理的C++汉诺塔递归算法完全攻略全部内容,希望文章能够帮你解决C++汉诺塔递归算法完全攻略所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。