借助中间的那一根针:
将63个盘子由x-------y
将最底下的第64个盘子从x移到z
将y上的63个盘子移动到z上
问题一:将·x上的63个盘子借助z到y
问题二:将y上的63个盘子借助x到z
问题一(
将前62个盘子借助x移到z上
将最底下的第63盘子移到y上
将z上的62个盘子移到y上
)
问题二(
将62个盘子y---x
第63个盘子移动到z
将x上的62个盘子移动到y上
)
二叉树
#include <stdio.h> void hanoi(int n, char x, char y, char z); void hanoi(int n, char x, char y, char z) { if (n == 1) { printf("%c --> %c ", x, z); } else { hanoi(n-1, x, z, y); printf("%c --> %c ", x, z); hanoi(n-1, y, x, z); } } int main(void) { int n; printf("输入轮子的数量"); scanf("%d", &n); hanoi(n, 'X', 'Y', 'Z'); return 0; }