递归,可以很简单

(整期优先)网络出版时间:2017-06-16
/ 1

递归,可以很简单

王金萍

山东省牟平第一中学山东烟台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.编写程序模块来调用过程。