本文主要是介绍汉诺塔hanoi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
递归汉诺塔
这个递归的例子已经见过好多次了,但是每次遇到的时候,或多或少都出过bug,现在来总结一下,以便后面会用到
#include <iostream>using namespace std;void hanoi(int n,char here, char temp, char there)
{if(n == 1){cout << 1 << "从"<<here<<"到"<<there << endl;return ;}else{hanoi(n-1,here,there,temp);//把here上的n-1个盘子移动到temp临时柱子上,这样就可以把第n个盘子从here移动到there了cout << n << "从"<<here<<"到"<<there << endl;hanoi(n-1,temp,here,there);//然后再把temp柱子上的n-1个盘子移动到there上面,这样就结束了}
}
int main()
{hanoi(3,'a','b','c');//把三个盘子,从a柱子移动到c柱子上面return 0;
}
因为是递归的过程,所以不必要理解每一步是怎么移动的,只需要知道,这一步到下一步是怎么移动的就好了
这篇关于汉诺塔hanoi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!