有志者、事竟成,破釜沉舟,百百二秦关终属楚;苦心人、天不负,卧薪尝胆,三千越甲可吞吴。

拂晓犬吠

学习中遇到困难是很正常的事情,不要苦恼,不要气馁,恰恰相反,应该兴奋,因为又学到知识了,需要不断提高自己应对问题和解决问题的能力和信心。

学习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

第二步:递归的结束条件

编写递归程序的要点:

第一步:找到正确的递归算法,这是编写递归程序的基础;

第二步:确定递归算法的结束条件,这是决定递归程序能否正常结束的关键。

如果是数值问题,亦是数学问题。可以表达为数学公式,从数学公式推导问题的递归定义,然后确定问题的边界条件,从而确定递归的算法和递归结束条件。

还有非数值问题,这个要自己再总结。

posted @ 2018-07-09 12:43  ID拂晓犬吠  阅读(192)  评论(0)    收藏  举报