浅谈《递归法的实现》课堂教学

2015-03-02 09:09金云江苏省昆山经济技术开发区高级中学江苏昆山215300
现代教育科学·中学教师 2015年6期
关键词:昆山兔子例题

金云(江苏省昆山经济技术开发区高级中学,江苏 昆山 215300)

浅谈《递归法的实现》课堂教学

金云
(江苏省昆山经济技术开发区高级中学,江苏 昆山215300)

“递归法的实现”是教育科学出版社高中《算法与程序设计》 (选修)第三章第五节第三小节的内容。我对本小节教授制定了一定的教学策略,“从游戏来引入课题”,“从简单、典型例题来讲解知识”,“从简到难来完善巩固知识”,从而完成教学任务。

一、用游戏引入课题,激发学生兴趣

我们学校学生的整体知识基础比较低,“算法与程序设计”与数学又有很大的关联,递归法对学生来说是非常难的,学生无法理解和想象。因此,我通过设计游戏,让学生亲身体验,在欢快的气氛中理解递归法。游戏内容:将一句诗“柳暗花明又一村”的七个字写在七张纸上,请八个同学排成一排,七张纸依次贴在第一个到第七个同学的背后,每一个同学只能看前一个同学背后的字,从第一个同学开始依次问下一个同学是句什么诗,然后由最后一个同学开始依次告诉前一个同学他所知道的所有内容,最后第一个同学就能猜出是句什么诗了。这个游戏清楚明了地蕴含了递归法——递推和回归。前面学习了自定义函数,这个游戏用自定义函数可以这样描述:

Private Function what(number).如果我是最后一个,我就告诉你是什么字;否则,我问了下一个同学后再一起告诉你End Function。这个函数的作用就是得到第number个学生知道的字,所以要知道这句诗是什么,就要不停地用这个函数,从而引出递归法就是函数自己调用自己。

二、用简单、典型例题,分析讲解知识

教材上用了兔子繁殖的例题来实现递归法,对学生来说是比较难的,就算是让学生用数学的方法来做,学生也不一定能正确的算出答案,更不用说用刚学习的递归法了,并且在这个程序中用到了在函数中两个同时调用函数自己,那对学生来说就是难上加难了,所以我就用简单、典型的例题来讲解,帮学生一起用递归法来分析问题。例:计算5!。这个题如果让学生用数学来做是非常简单的,人人都会,这样再用递归法来分析就简单了。分析如下:用递归法的思想,5!可以看成(4! ×5),4!可以看出(3!×2)……直到最后一定要知道1!等于1。

某一个数的阶乘都可以看成是它前一个数的阶乘乘以它自己本身,根据分析能够编写这样的自定义函数,作用是计算某个数的阶乘。

在这代码中“s=s(n-1)×n”就是再一次调用了此函数,体现了递归法。

学生会觉得很熟悉,在前面学习程序的基本结构时,学习了循环的嵌套,学生都知道,要内循环都运行完了,再运行外循环;同样的,在函数调用时也是,从内到外,内部的代码运行结束了,再运行外部的代码。通过上述的分析、讲解,学生会比较容易的掌握递归法。

三、从简到难,完善巩固知识

在学生对递归法有一定掌握的基础上,再来实现兔子繁殖的问题。要用递归法来实现此问题,在自定义函数中要用到两个同时调用函数自己。例:有人养了一对兔子,这对兔子以后每月生一对兔子,新生兔子从第三个月开始,也是每月生一对兔子,问12个月后这人有多少对新生兔子?通过分析,能得出这样一个数列,数学上也称为斐波那契数列:1,1,2,3,5,8……

学生自己讨论探究,分析结果如下:如果是第一个月或是第二个月,兔子数都只有一对,否则,兔子数等于前一个月的兔子数加前两月的兔子数。根据分析结果,让学生自主编写程序,然后教师评讲,展示正确代码。

其中“tu=tu(month-1)+tu(month-2)”这行代码体现了函数自己调用自己,用递归法实现了问题,“If month=1 or month=2 then tu=1”这行代码体现了递归法的必要条件——结束条件。在此,为了让学生对递归法理解透彻,学生在做题时一定要清楚两点:一是要清楚自定义函数的作用,如例题中函数的作用是计算某一个月有的兔子对数;二是要清楚自定义函数如何自己调用自己的,以及整个程序的运行过程。

通过这题由简到难,通过学生自主探究,分析解决问题,通过教师提示讲评,学生对递归法这一知识点进行了巩固和完善

金云(1984-),女,江苏昆山人,江苏省昆山经济技术开发区高级中学,中小学一级。研究方向:信息技术教学。

猜你喜欢
昆山兔子例题
黄旙绰与昆山腔考
昆山三虑五金机械有限公司
昆山迈晟科精密机械有限公司
昆山三虑五金机械有限公司
由一道简单例题所引发的思考
由一道简单例题所引发的思考
兔子
向量中一道例题的推广及应用
问渠哪得清如许 为有源头活水来
守株待兔