如何使用C语言实现汉诺塔

简介: 如何使用C语言实现汉诺塔

现有3个柱子A、B、C,有n个圆盘在A柱上,要实现n个圆盘要从A柱从大到小移动到C柱。


思路:先将n-1个圆盘移动到B柱上,然后将最后一个圆盘移动到C柱上,最后将B柱上的n-1个圆盘移动到C柱。


#include <stdio.h>
void move(char A, char C, int n)
{
  printf("把第%d个圆盘从%c-->%c\n", n,A, C);
}
void Hanoi(char A, char B, char C, int n)
{
  if (n == 1)
  {
    move(A, C, n);
  }
  else
  {
    //n-1个圆盘借助C移动到B
    Hanoi(A, C, B, n-1);
    //最后一个圆盘从A移动到C
    move(A, C, n);
    //n-1个圆盘从B借助A移动到C
    Hanoi(B, A, C, n - 1);
  }
}
int main()
{
  int n = 0;
  printf("输入A柱上圆盘的个数\n");
  scanf("%d",&n);
  Hanoi('A', 'B', 'C', n);
  return 0;
}

image.png

相关文章
|
12月前
|
C语言
c语言汉诺塔
c语言汉诺塔
90 0
|
2月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
|
5月前
|
C语言
C语言递归问题【青蛙跳台阶】和【汉诺塔】
C语言递归问题【青蛙跳台阶】和【汉诺塔】
|
4月前
|
C语言
【c语言】汉诺塔问题详解(c语言递归函数)
【c语言】汉诺塔问题详解(c语言递归函数)
29 0
|
5月前
|
C语言
汉诺塔————经典递归问题(C语言实现)
汉诺塔————经典递归问题(C语言实现)
64 0
|
5月前
|
C语言
【C语言】汉诺塔 —— 详解
【C语言】汉诺塔 —— 详解
|
C语言
C语言经典题目之 汉诺塔问题
C语言经典题目之 汉诺塔问题
71 0
|
5月前
|
C语言
C语言解决汉诺塔问题
C语言解决汉诺塔问题
49 0
|
5月前
|
算法 C语言
C语言汉诺塔数列(循环版,递归版)
C语言汉诺塔数列(循环版,递归版)
63 0
|
11月前
|
C语言
【C语言刷题】汉诺塔问题
【C语言刷题】汉诺塔问题
52 1