汉诺塔问题简介
汉诺塔问题(Tower of Hanoi)是一个经典的递归问题。问题描述如下:
有三根柱子,编号为A、B和C。
在柱子A上有N个不同大小的圆盘,按照从大到小的顺序叠放。
目标是将所有圆盘从柱子A移动到柱子C,遵循以下规则:
每次只能移动一个圆盘。
任何时候都不能将较大的圆盘放在较小的圆盘上面。
递归思路
解决汉诺塔问题的递归思路如下:
基本情况:如果只有一个圆盘,直接从起始柱子移动到目标柱子。
递归步骤:
将顶部的N-1个圆盘从起始柱子移动到辅助柱子,使用目标柱子作为辅助。
将第N个(最大的)圆盘从起始柱子移动到目标柱子。
将那N-1个圆盘从辅助柱子移动到目标柱子,使用起始柱子作为辅助。
C语言实现
#include <stdio.h>
// 函数声明
void hanoi(int n, char source, char auxiliary, char target);
int main()