本段代码简单实现了汉诺塔的递归实现,该代码是将b柱子作为过渡,将n个盘子从a移动到c:
#include<iostream>
using namespace std;
void move(char sourse, char distination) {
printf("%c --> %c\n", sourse, distination);
}
void hanoi(int n, char a, char b, char c) {
if (n == 1) {
move(a, c);
return;
}
else {
hanoi(n - 1, a, c, b);
move(a, c);
hanoi(n - 1, b, a, c);
}
return;
}
int main() {
hanoi(5, 'a', 'b', 'c');
return 0;
}
下面是汉诺塔的递归树,有助于更好理解这个过程: