河内塔C程序

河内的塔是一个数学难题。它由三根杆和许多大小不同的圆盘组成,可以滑到任何杆上。难题始于盘片上整齐排列的盘片,其大小按升序排列在一根杆上,顶部最小。我们必须在第三杆上获得相同的堆叠。

难题的目的是遵循以下简单规则将整个堆栈移动到另一根杆上:

  • 一次只能移动一个磁盘。

  • 每次移动都包括从一个堆栈中取出上部磁盘并将其放在另一个堆栈的顶部,即,只有在磁盘是堆栈中最上面的磁盘时,才能移动该磁盘。

  • 不能在较小的磁盘上放置任何磁盘。

示例

输入 -3

输出  − A至B 

              A到C 

             企业对企业 

            A到B 

            C到A 

            C到B 

A至B解释-使用递归函数并求解河内塔。

示例

#include<stdio.h>
void TOH(int n,char x,char y,char z) {
   if(n>0) {
      TOH(n-1,x,z,y);
      printf("\n%c to %c",x,y);
      TOH(n-1,z,y,x);
   }
}
int main() {
   int n=3;
   TOH(n,'A','B','C');
}

输出结果

A to B
A to C
B to C
A to B
C to A
C to B
A to B