我系李曾妍老师在首届全国高校青年教师教学竞赛中获二等奖课件汉

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Time complexity: O(2n)
移动64个盘子需要: 264-1=1844亿亿次。
如果每次移动用1秒,需要5800亿年。
如果利用超级计 算机“天河一
号”,需要数小 时。
天河一号:测运算速度达每秒2570万亿次。
4、Summary(小结)
solution (解决方法)
1. recursion formula (递归公式) 2. ending condition(边界条件)
of recursion algorithm.
1、Analysis(分析):
63(N-1)
64(N)
A杆
B杆
C杆
if A has N(N>1) disks ,divide it into 2 parts:
top N-1 disks, and bottom disk.
① move the top N-1 disks: from A,usingC,to B ② move the bottom disk: from A,to C
边界条件 递归公式
5
wenku.baidu.com
Use recursion in Hanoi Tower Problem (用递归解决汉诺塔问题)
Solution(解决方法) of recursion program:
1. find the recursion formula(递归公式). 2. confirm the ending condition(边界条件)
Chapter17:Recursion (递归)
Hanoi Tower Problem (汉诺塔问题)
1
Hanoi Tower (汉诺塔)
故事开始于古印度……
相传在创世纪时代, 有一座神庙, 据说它是宇宙的中心。 神庙里竖立着三根银杆, 有64个大小都不同的金盘, 每一个金盘正中央都有一个洞, 依“大盘在下,小盘在上 ”的顺序 放在同一根银杆上。
2. Ending condition(边界条件) if ( n == 1 ) printf(" %c %c\n",A, C);
8
2、Programming(编写程序):
void hanoi(int n,char A,char B,char C) { if ( n>1 ) { hanoi ( n-1, A, C, B ); printf("%d: %c -> %c\n",++i,A, C); hanoi ( n-1, B, A, C ); } else printf("%d: %c -> %c\n",++i,A,C);
step(63) =step(62)+1+step(62)

step(64) = 264-1
step(63) = 263-1

step(2) =step(1)+1+step(1)
step(1) =1
step(2) =1+1+1=3
3、Complexity analysis of algorithm (算法复杂度分析):
}
9
Hanoi demo
hanoi(1,A,B,C)
hanoi(2,A,C,B)
AB
hanoi(3,A,B,C)
AC
hanoi(1,C,A,B) hanoi(1,B,C,A)
hanoi(2,B,A,C)
BC
hanoi(1,A,B,C)
AC CB BA AC
A
B
C
step(64) =step(63)+1+step(63)
③ move the top N-1 disks: from B,using A,to C
solution (解决方法) :
1. recursion formula (递归公式) if ( n > 1 ) hanoi ( n-1, A,C,B ); printf("%c %c\n", A, C); hanoi ( n-1, B,A,C );
Hanoi Tower (汉诺塔)
天神预言: 当金盘全部被搬完时,
世界末日将降临。
A
B
C
前面的知识点
例题:用递归的方法求fac(n)=n!
如: 10!= 10*9! 9! = 9*8! …… 2! = 2*1! 1! =1
1
(n = 1)
fac(n) = n*fac(n-1) (n > 1)
time complexity of algorithm (算法时间复杂
度)
O(2n)
5、 Programming exercise
作业:编程设计一个Hanoi小游戏。
A
B
C
Hanoi Tower (汉诺塔)
Rule(规则)
You may move only ONE disk at a time. 每次只能移动一个金盘
A larger disk may not rest on top of a smaller one at any time较大的金盘不可放在 较小的金盘上
相关文档
最新文档