汉诺塔(Hanoi)问题递归&非递归的C++实现及总结
汉诺塔(Hanoi)问题递归&非递归的C++实现及总结 由于刚入门不算很久,所以就那汉诺塔这种简单问题来练下手啦~~ 【汉诺塔问题内容】 (虽然路人皆知但还是写一下好了。。。) 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。 详细的背景可以去 百度百科 自己看~~ 【递归实现】 //汉诺塔问题最简单最经典的解决方法当然是递归解决啦~~ #include <iostream> using namespace std ; void hanoi( int n, int a, int b, int c) { if (n > 0 ) { hanoi(n- 1 , a, c, b); cout << "move " << a << " to " << b << endl; hanoi(n- 1 , c, b, a); } } int main() { int n; cin >> n; hanoi(n, 1 , 2 , 3 ); return 0 ; } //非常简单就搞定了