程序设计中递归函数教学问题探究

程序设计中递归函数教学问题探究

ID:36795868

大小:573.73 KB

页数:5页

时间:2019-05-15

程序设计中递归函数教学问题探究_第1页
程序设计中递归函数教学问题探究_第2页
程序设计中递归函数教学问题探究_第3页
程序设计中递归函数教学问题探究_第4页
程序设计中递归函数教学问题探究_第5页
资源描述:

《程序设计中递归函数教学问题探究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第16期计算机教育2010年8月25日ComputerEducationNo.16Aug.25,201059文章编号:1672-5913(2010)16-0059-04中图分类号:G642文献标识码:B程序设计中递归函数教学问题探究王慧娇(桂林电子科技大学计算机与控制学院,广西桂林541004)摘要:递归问题是程序设计语言教学中的一个重点、难点内容,针对递归教学的教学特点,阐述递归函数的精髓和教学方法,提出将理论和实践结合起来,通过剖析学生在学习递归函数时产生的错误和误区,应用实例和类比策略帮助学生解决递归函数学习中存在的问题,取得了事半功倍的教学效果。关键词:递归函数;递

2、归教学;程序设计基础递归是计算技术中的重要概念之一,与递归有关即在计算结构相同的情况下,使计算的规模小于自[1]137的概念有递归关系、递归数列、递归过程、递归算法、身。一般来说,递归需要有边界条件、递归递归程序、递归方法。递归不仅应用于算法与程序设前进段和递归返回段。当边界条件不满足时,递计之中,还广泛地应用于定义序列、函数和集合等各归前进;当边界条件满足时,递归返回。个方面。对递归的理解和应用,有助于提高学生的计算思维。尽管递归的概念很重要,但部分学生对递归的理解和应用还较为困难,尤其对刚接触程序设计的初学者来说,什么场合下使用递归的方法,使用递归的方法应注意哪些问题等

3、还存在不少困惑。本文针图1递归函数的概念对递归函数教学中的一些教学方法进行了探讨,对学2递归的精髓与设计难点生容易产生问题的知识点进行了着重阐述,让学生牢固掌握递归程序设计方法,将所学知识融会贯通以解递归算法在可计算性理论中占有重要地位,它是决实际问题。算法设计的有力工具,对于拓展编程思路非常有用[2]。1递归函数就递归算法而言并不涉及高深数学知识,只不过初学者要建立起递归概念不十分容易。因此,在教学中所递归函数指的是函数直接或间接地调用“自身”。采用的教学线路是先用一个简单的例子导入递归的从图1中可以看到,这两种递归调用都是无终止的自概念,归纳出递归的要素;接下来采用实例

4、教学的形身调用,显然在程序中不应出现这种无终止的调用,式,给出递归执行的过程,让学生对递归建立感性认而只应出现有限次数、有终止的调用。在以上的关于识;接下来给出递归问题的求解过程,一般分为数值递归函数的定义中,调用自身中的“自身”两个字加型递归问题和非数值型递归问题,由于学生对数值型上了引号。若不加引号,就会出现循环定义的问题。递归问题的理解要好一些,所以首先给出数值型递归事实上,递归是以比自身简单一些的说法来定义的,问题求解再介绍非数值型递归问题求解。作者简介:王慧娇(1976-),女,讲师,硕士,研究方向为嵌入式系统。计算机教育60ComputerEducation20

5、102.1递归函数的执行过程4)以此类推,可以得到整个调用过程。这个过程和前面我们用数学公式计算3!的过程是一样的,都在教学中首先从一个简单的递归程序开始分析是先一步步展开然后再一步步收回。递归程序求n的阶乘的执行过程,通过对递归程序的在计算机系统中,执行递归函数是通过栈来实现执行的分析,可以打消初学者对递归程序功能的怀疑的。当主函数main()调用阶乘函数fact()时,系统就心理。n的阶乘是这样定义的:自动为递归建立一个工作栈,栈中每个结点就是一次0!=1递归调用的数据区。函数被调用时,则栈内增加一个n!=n·(n-1)!(n>1)与其对应的结点,当函数调用完毕后(注意

6、包括它调图2以求3!为例,分析递归函数fact(n)的执行用的子函数),与其对应的结点出栈。增加一层递归,过程,求n!程序见2.2节。3!=3*2!,2!=2*1!,栈内就要增加一个结点;反之,当结束一层递归调用,1!=1*0!=1*1=1,知道了1!=1再反过来算回去,栈内就要删除一个结点。2!=2*1!=2*1=2,3!=3*2!=3*2=6。递归函数的执行过程依然是普通的函数调用过intmain()程,所谓递归函数调用自身,实质上是一系列的函数{intp;顺序执行的结果,只不过这些函数有相同的代码段,p=fact(3);但是有不同的数据段。所谓递归的层次就是函数调用p

7、rintf(“%d”p);的深度。由于递归函数有相同的处理过程,因此用于}表示递归调用的栈的结点是相同的结构类型,而一般1)main()函数有一个局部变量p,如图2所示。的函数调用有不同的形参表。主函数第一次调用第二次调用第三次调用2.2数值型递归问题的求解n=3n=3数值型递归问题一般都有明确的递推公式和初p=fact(3)n=2result=3*fact(2)result=2*fact(1)始条件,对于这类递归问题编写递归程序的一般方法n=1是:建立递归数学模型,确立递归终止条件,将递归result=1[3]数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。