基于C语言的递归函数教学方法探讨

基于C语言的递归函数教学方法探讨

摘要:本文从实际教学出发,首先讨论了递归的基本条件,总结出递归程序的设计方法,然后详细分析递归程序的执行过程并给出了递归程序的一般结构,最后让学生自己分析汉诺塔问题并动手写程序,在教学中取得了较好的效果。

关键词:函数;递归;教学

文献标识码:A

C语言一般作为计算机及相关专业的第一门语言,它是后续计算机课程的基础,学生对它的掌握程度直接影响到后续课程的学习。函数是C语言中一个非常重要的部分,所有程序都是由函数组成的,如果没有掌握函数,就不可能掌握C语言。在函数中,递归函数是一类比较难以掌握的问题,学生在学习过程中往往对这类程序的执行过程不了解,对递归问题的认识不清楚,难以写出正确的递归程序。针对递归问题的教学,人们在实践中做了很多有益的探讨,也有一些教材对这一问题做了较为细致的分析。但以上工作大都以汉诺塔问题进行讲解,而汉诺塔问题本身较为复杂,很多学生一下难以掌握该程序的执行过程。本文从实际教学出发,首先分析递归的基本条件,从简单程序开始分析,写出递归程序,然后一步一步分析递归程序的执行过程,让学生对递归有更深入的理解。然后写出递归程序的一般结构,最后分析汉诺塔问题,让学生自己写出程序。

2递归的基本条件

一般情况下采用递归方法来解决问题,必须符合以下三个条件:

a. 可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的问题的规模有规律地递减。也就是说解决问题的方法相同,调用函数的参数每次不同(有规律地递减),如果没有规律也就不能运用递归方法求解。

b. 每个子问题必须比原来问题的规模更小,即使小一号也行,如果能够迅速减小规模更好。

c. 必定要有一个明确的结束递归的条件。当问题的规模达到一定程度时(一般的时候应该是规模足够小),问题的解是已知的,在这个地方能结束递归调用,不然可能导致系统崩溃或陷入死循环。

3递归问题分析

递归程序最少有两种方法可以写出。第一种是想办法把问题转化为数学表达式,能用数学表达式写出的,可以直接把数学表达式变为程序;第二种是按照递归的基本条件,分析所给问题的结构,一个问题总具有一定的规模,想办法把规

相关文档
最新文档