汉诺塔问题是一个纯递归问题,应该是比较简单的
搞定n个盘子时只要搞定n-1个盘子就ok了,
先将n-1个盘子经过左边那个盘子放到中间那个盘子,在把第n个盘子放过去,最后把n-1个盘子放在最左边的那个就ok了。
#include<stdio.h> void move(char A,char C) { printf("%c---%c\n",A,C); } void han(char A,char B,char C,int n) { if(n==1) move(A,C); else { han(A,C,B,n-1); move(A,C); han(B,A,C,n-1); } } int main() { int n; scanf("%d",&n); han(‘A‘,‘B‘,‘C‘,n); return 0; }
时间: 2024-10-10 22:57:43