1·
2·函数的本质
2·1 整个函数分为多个源文件,一个文件分为多个函数,一个函数分为多个语句,这就是函数的组织形式。好处:分化问题,便于编写程序,便于分工。函数的出现是人的需要。函数的目的就是实现模块化编程,说白了就是提供程序的可移植性。
2·2 函数的书写一般原则:
第一,遵循一定格式;第二,一个函数只做一件事;第三传参不宜过多(不超过4个,多了就考虑结构体打包);第四,尽量少定义全局变量(最好用传参返回值来和外部交换数据,不要用全局变量)。
2·3 函数是动词,变量是名词
函数结果编译编程可执行代码段,变量(主要指全局变量)经过编译后变成数据或者在运行时变成数据。一个程序的运行需要代码和数据两方向的结合才能完成,代码是为了加工数据,数据必须借助代码来起作用。
2·4 函数的本质:数据处理器
由2·3函数是动作,变量是名词的观点,就可以很好理解函数的本质是数据处理的意义。
程序的主体是数据,也就是说程序运行的主要目标是生成目标数据,写代码就是为了得到目标数据。
函数就是一个程序的缩影,函数的参数列表就是为了给函数输入原材料数据,函数的返回值和输出型参数就是为了向外部输出目标数据,函数体里面的那些代码就是加工算法。
函数在静止没有运行的时候只是占用一些存储空间,不占用资源(CPU+内存);函数的每一次运行就像是机器的每一次开机,运行时需要耗费资源(CPU+内存),运行时对数据进行加工,运行完会释放占用资源。
整个程序的运行其实是 : 很多函数相继运行的连续过程。
3· 递归函数
// 用递归函数计算阶乘
#include <stdio.h>
int jiecheng(int n);
int main(void)
{
int a = 5;
printf("%d的阶乘是:%d\n",a,jiecheng(a));
return 0;
}
int jiecheng(int n)
{
if (n < 1)
{
printf("n必须大于1\n");
}
if(n == 1)
{
return 1;
}
else
return (n * jiecheng(n - 1));
}
递归需要理解的一个点:先从最外层慢慢向里层递归,到达最里层不再符合递归条件的时候,又慢慢向外层递归回来。