汉诺塔问题
汉诺塔问题是一个纯递归问题,应该是比较简单的
搞定n个盘子时只要搞定n-1个盘子就ok了,
先将n-1个盘子经过左边那个盘子放到中间那个盘子,在把第n个盘子放过去,最后把n-1个盘子放在最左边的那个就ok了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #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; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步