汉诺塔问题是个经典的递归问题,题目是将一个由N个盘子由大到小依次堆叠起来的塔转移到另一柱上,转移过程中可以使用中间柱作为辅助。一次只能挪动一个盘子,且挪动过程中堆叠盘子也要让它们由大到小依次排列。
![](https://i-blog.csdnimg.cn/blog_migrate/399bcec1cc9f76736179fa2e6276ffd4.png)
当只有一个盘子时,我们可以直接将它从A柱挪到C柱,当有多个盘子时,可以将n-1个盘子从A挪动到B,然后再把最大的盘子从A挪到C,最后将B上的n-1个盘子挪动到C。
伪代码:
void f(int n(盘子总数),char A,char B,char C)
{
汉诺塔问题是个经典的递归问题,题目是将一个由N个盘子由大到小依次堆叠起来的塔转移到另一柱上,转移过程中可以使用中间柱作为辅助。一次只能挪动一个盘子,且挪动过程中堆叠盘子也要让它们由大到小依次排列。
当只有一个盘子时,我们可以直接将它从A柱挪到C柱,当有多个盘子时,可以将n-1个盘子从A挪动到B,然后再把最大的盘子从A挪到C,最后将B上的n-1个盘子挪动到C。
伪代码:
void f(int n(盘子总数),char A,char B,char C)
{