学习C程序设计(三)函数
1.1
函数是程序模块化的基础,是写出一段具有特定功能的程序(我们写一段程序,去实现一个功能)。
函数的一个功能,便是代码的重复使用。
c语言中,函数是最小功能单位;
c程序是由一个主函数以及若干个功能函数构成;
函数的类型是函数返回值的类型。
实现程序的模块化设计!
1.2
模块化程序设计,就是在逐条的写程序之前,首先需要把软件中的主要结构和主要功能表达出来,要定义好流程中各个框架之间的输入输出,和彼此的连接关系。
这种自上而下,逐步求精的结果,就是得到了一系列以功能模块为单位的算法描述,这种以功能模块为单位进行程序设计进而实现其求解算法的方法,就是模块化。
模块化程序设计,将一个大的程序按功能分割成一些小模块。这样:
各个模块相对独立,功能单一,结构清晰,接口简单;
控制了程序设计的复杂性;
提高软件的可靠性;
缩短开发周期;
避免程序开发的重复劳动;
易于维护和功能扩充
C语言就是一个模块化程序设计的工具;
1.3
函数的调用
语句的形式:函数名(实参表);
函数调用作为表达式的运算分量;
函数调用结果作为另一个函数的参数;
1.4
函数之间的数据传递
值传递:函数调用时,将实参或实参表达式的值单向传递给形参。
单向传递;实参和形参必须是类型相同,个数相等,一一对应。
地址传递:函数调用时,将数据的存储地址作为参数传递给形参(数组名做函数参数)
双向传递;实参与形参必须是地址常量或变量
2.1
递归的基本概念
递归的调用:一个函数直接或间接地调用了它本身,就称为函数的递归调用,简称递归。
编写程序,求数列1,1,2,3,5,8,13,21,……的第N项。
思路:这是一个数值问题。首先是找出数学规律,其次是递归的条件。
比如
第一步:找出表示数列第N项的递归公式:Fn = Fn+1 + Fn+2
第二步:递归的结束条件
编写递归程序的要点:
第一步:找到正确的递归算法,这是编写递归程序的基础;
第二步:确定递归算法的结束条件,这是决定递归程序能否正常结束的关键。
如果是数值问题,亦是数学问题。可以表达为数学公式,从数学公式推导问题的递归定义,然后确定问题的边界条件,从而确定递归的算法和递归结束条件。
还有非数值问题,这个要自己再总结。