- /*
- * Copyright (c++) 2017, 烟台大学计算机学院
- *All rights reserved,
- * 文件名: main.cpp
- * 作 者:刘照京
- *完成日期:2017年 9月 14日;
- * 第三周 :汉诺塔问题
- */
- #include <stdio.h>
- #define discCount 20
- long move(int, char, char,char);
- int main()
- {
- long count;
- count=move(discCount,'A','B','C');
- printf("%d个盘子需要移动%ld次\n", discCount, count);
- return 0;
- }
- long move(int n, char A, char B,char C)
- {
- long c1,c2;
- if(n==1)
- return 1;
- else
- {
- c1=move(n-1,A,C,B);
- c2=move(n-1,B,A,C);
- return c1+c2+1;
- }
- }
- 结果图
- 盘子数为4
-
- 盘子数为8
-
- 盘子数为16
-
- 盘子数为64
-
- 知识点总结:64个盘子加载不出来。
- 学习心得:时间复杂度对于设计算法来说十分重要。
相关文章: