8·C语言---C语言宏定义与预处理,函数(递归函数)


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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));

}

递归需要理解的一个点:先从最外层慢慢向里层递归,到达最里层不再符合递归条件的时候,又慢慢向外层递归回来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值