微课-汉诺塔问题教案.doc
文本预览下载声明
本微课适用范围如下所示:
课程所属学科:计算机
适用专业:计算机应用技术、计算机软件工程、电子信息
适用课程:C语言程序设计、C++程序设计、JAVA程序设计、数据结构
适用对象:有一定编程基础的同学
《汉诺塔问题》微课教案
学院(部): 软件学院 系(教研室): 网络教研
授课教师: 杨 珺 职 称: 副 教 授
课程名称 汉诺塔算法解析及其程序实现 课程类别 微课教学 授课对象 具有一定程序设计基础 考核方式 自我理解与自我实现 教
学
基
本
目
的
和
要
求 “微课”是指以视频为主要载体记录教师在课堂教育教学过程中围绕某个知识点或教学环节而开展的精彩教与学活动全过程。“微课”的核心组成内容是课堂教学视频(课例片段),同时还包含与该教学主题相关的教学设计、素材课件、教学反思、练习测试及学生反馈、教师点评等辅助性教学资源,它们以一定的组织关系和呈现方式共同“营造”了一个半结构化、主题式的资源单元应用“小环境”因此,“微课”既有别于传统单一资源类型的教学课例、教学课件、教学设计、教学反思等教学资源师生可流畅地在线观摩课例,查看教案、课件等辅助资源;也可灵活方便地将其下载保存到终端设备(如笔记本电脑、手机、MP4等)上实现移动学习、“泛在学习”,非常适合于教师的观摩、评课、反思和研究。课程的性质和任务是也是一实践的课程,既要掌握概念,又要动手编程,还要上机调试运行。对计算机专业和理工类专业来说是。课程的教学目标本课程的教学目标是:通过理论和实践教学,使学生较好地掌握知识,掌握基本的程序设计过程和技巧,具备初步的,并能熟练应用C集成环境进行的编写、编译与调试,解决一般编程问题的水平。重点:C二、????? 重点:。
三、顺序结构程序设计????? 重点:?。?教材:《C程序设计》 谭浩强 清华大学出版社《C语言程序设计案例教程》张基温等 清华大学出版社教
学
安
排
引言
汉诺塔源自古印度神话,曾经是一个趣味数学难题,在无计算机的年代基本无法求解,在计算机帮助下可以很好的解决这个问题,但也受到计算机运算速度的影响。
讲授
一、问题出现的历史背景
(1) 汉诺塔问题也是世界末日问题之一。
(2) 古印度趣味数学问题之一。
二、汉诺塔问题的特点
重复同一种运算,但是计算机量非常巨大。
三、 汉诺塔问题求解方法
三根杆子,64个盘子。
依据“大盘在下,小盘在上”的顺序放在同一根杆上。
利用剩余的两根空杆,将盘子移致另一根杆子上。但是不能违背“大盘在下,小盘在上”原则。
四、算法的结构(3个C程序引入C程序结构)
(1)设计递归函数
用递归的方法求fac(n)=n!
fac(n)=n*fac(n-1) (n 1)(递归公式)
fac(n)=1 (n=1)(递归边界条件)
(2)设计recursion formula (递归公式)
if ( n 1 )
hanoi ( n-1, A,C,B );
printf(%c ( %c\n, A, C);
hanoi ( n-1, B,A,C );
(3)设计Ending condition(边界条件)
if ( n == 1 )
printf( %c ( %c\n,A, C);
(4)设计递归函数void hanoi(int n,char A,char B,char C)
{ if ( n1 ) {
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);
}
(5)Complexity analysis of algorithm(算法复杂度分析)
时间复杂度为:O(2n)
思考题、
课后作业 阅读: 相关的汉诺塔的资料
课后设计:编写一个汉诺塔的游戏程序 主要
参考资料 《数据结构》、《C语言程序设计》、《C++程序设计教材》教材 课后自我
总结分析 通过本课程的学习,可以帮助同学进一步理解递归问题和栈的应用。并且可以提高同学的动手编程能力 备注 程序实现部分
汉诺塔问题的递归实现:
#includestdio.h
void hanoi(int n,char A,char B,char C)
{
if(n==
显示全部