/* 二色汉诺塔 */#include <stdio.h>void hanoi(int disks, char sources, char temp, char target) {if(disks == 1){printf("move disk from %c to %c \n", sources, target);printf("move disk from %c to %c \n", sources, target);}else{hanoi(disks - 1, sources, target, temp);hanoi(1, sources, temp, target);hanoi(disks - 1, temp, sources, target);} }void hanoi2colors(int disks) {char source = 'A';char temp = 'B';char target = 'C';int i;for(i = disks / 2; i > 1; i--){hanoi(i - 1, source, temp, target);printf("move disk from %c to %c \n", source, temp);printf("move disk from %c to %c \n", source, temp);hanoi(i - 1, target, temp, source);printf("move disk from %c to %c \n", temp, target); }printf("move disk from %c to %c \n", source, temp);printf("move disk from %c to %c \n", source, target); }int main() {int n;printf("请输入盘数:");scanf("%d", &n);hanoi2colors(n);return 0; }
运行结果: