图1
根据图1所示,能够分析出,某一个数的阶乘都看以看成是它前一个数的阶乘乘以它自己本身,根据分析能够编写这样的自定义函数,作用是计算某个数的阶乘。代码如下:
Private Function s(n As Integer) As Integer
If n=1 Then
S=1
Else
S=s(n-1)*n
End if
End Function
在这代码中“s=s(n-1)*n”就是再一次的调用了此函数,体现了递归法。下面就是给学生形象地演示这个函数在程序运行时是如何运行的。
图2
从图2显示,学生会觉得很熟悉,在前面学习的程序的基本结构时,学习了循环的嵌套,学生都知道,要内循环都运行完了,再运行外循环;同样的,在函数调用时也是,从内到外,内部的代码运行结束了,再运行外部的代码,如图2所示。
通过上述的分析,讲解,学生会比较容易的掌握递归法。在此,要学生特别注意两点:1、递归分为递推和回归两部分,从图1中能看出;2、递推一定要有结束条件,如例题中的If n=1 then s=1。为了检验学生的掌握情况,从此题引申两个题目,让学生自主探究完成。一、计算10!;二、计算1+2+3+……+100用递归法实现。
从简到难,完善巩固知识
在学生对递归法有一定掌握的基础上,再来实现兔子繁殖的问题。要用递归法来实现此问题,在自定义函数中要用到两个同时调用函数自己。例:有人养了一对兔子,这对兔子以后每月生一对兔子,新生兔子从第三个月开始,也是每月生一对兔子,问12个月后这人有多少对新生兔子?通过分析,能得出这样一个数列,数学上也称为斐波那契数列:1,1,2,3,5,8……
学生自己讨论探究,分析结果如下:如果是第一个月或是第二个月,兔子数都只有一对,否则,兔子数等于前一个月的兔子数加前两月的兔子数。根据分析结果,让学生自主的来编写程序,然后教师评讲,展示正确代码。
Private Function tu(month as integer) as integer
If month =1 or month =2 then
Tu =1
Else
Tu =tu(month -1)+tu(month -2)
浅谈《递归法的实现》课堂教学(二)由毕业论文网(www.huoyuandh.com)会员上传。