山东省牟平第一中学 山东 烟台 264100
一、 合适的案例引入,了解递归
在广东版的递归算法中,采用的案例引入是斐波那契的兔子问题引入的。我觉得这个案例可以用于第二个案例来讲解。我讲这节课时,是用递归计算n!作为引入案例。
期刊文章分类查询,尽在期刊图书馆我是这样来分析这个问题的:
1.学生通过数学知识可知:
n!=n*(n-1)*(n-2)*……*3*2*1,
而(n-1)*(n-2)*……*3*2*1又可以写成(n-1)!,
所以n!又可以写成n!=1 当n=0时,
n!=n*(n-1)! 当n>0时。
根据公式,可以将求n!的问题变成求(n-1)!的问题,因为当(n-1)!求出以后,再乘以n就是n!,而求(n-1)!的问题,又可以变成求(n-2)!的问题,求(n-2)!的问题又可以变成求(n-3)!的问题,如此继续,直到最后变成求0!的问题,而根据公式,0!=1,再反过来求出1!,2!,……(n-1)!,n!。
递归的思想是直接或间接地调用自身的算法,调用自身算法的目的是把一个比较大的问题,层层转化为一个与原问题相类似、规模较小的问题,即n的问题化成(n-1)的问题,一直化到递归的出口,即1的问题,从而得到原问题的解。
2.要让学生认清递归的调用过程。
3.总结:对于求n!的例子学生很好理解,用简单的学生比较熟悉的数学问题入手,学生很容易理解递归的思想,从而进一步地探讨更深层面的递归调用问题。
如果一上来,拿比较复杂的问题来解决,将会起到一棒子打死的效果了。
二、动手实践,亲自体会递归的调用
很多课本中,只要是涉及到递归算法,就会提出汉诺塔的问题,与前面的案例相比,汉诺塔的问题更能让学生体会到不同参数之间的变化问题,能让学生在对递归有一定了解的情况下更好地来理解递归的调用。
三、尝试程序设计,循序渐进学习递归
递归思想了解了,递归的调用过程也理解了,接下来就是用递归算法来编写程序了。用递归来编写程序要与前面学习的函数与过程相结合。
1.先设计输入输出界面。
2.编写递归的过程,明确调用参数。
3.编写程序模块来调用过程。
论文作者:王金萍
论文发表刊物:《素质教育》2017年6月总第237期
论文发表时间:2017/7/21
本文来源: https://www.lw33.cn/article/0adab607489bd7fbe47c9769.html