函数:就是功能(实现这个功能过程)
1、定义函数:
返回值 函数名(形参)
{
}
static 返回值 函数名(形参)
{
}
注:如果被修饰为static,此函数只能被本地调用。
2、调用函数:执行一次函数
注:此函数的作用域一定要存在声明(告诉编译器,此接口就是为一个函数)
声明函数:告诉编译器,函数的类型
头文件:就是存放模块提供函数原型或类型声明
后缀名: .h
1、外部声明:告诉编译器此类型来自非本文件(外文件)
extern 声明;
函数: extern 函数原型;
extern void insert(int buf[],int ilen);
变量:extern 变量原型;
extern int a;
2、引用头文件:#include<>只有会去系统目录下查找
#include""会去指定路径下查找,如果查找不到,则会去系统下
递归:直接或者间接调用自身函数
1、
返回值 函数名(形参)
{
...
函数名(实参);
...
}
注:1when从什么时候 2when到什么时候结束 3what 每次递归时你需要干嘛
2、调用函数会系统调用函数的栈空间;
栈:First IN LAST OUT(FILO)
(模型:#)
练习题:
1、求1-100的和(递归)
f(4)=x+(x-1)...+1
f(1)=1
f(2)=2+1=2+f(1)=2+1
f(3)=3+2+1=3+f(2)
f(4)=4+3+2+1=4+f(3)
f(100)=100+99+..1=100+f(99)
2、求阶层:f(5)=5*4*3*2*1
f(1)=1!=1
f(2)=2*1=2*f(1)=2
f(3)=3*2*1=3*f(2)
3、求前n项的阶层和: s(5)=f(1)+f(2)+f(3)+f(4)+f(5)
s(1)=f(1)
s(2)=f(2)+f(1)
s(3)=f(3)+f(2)+f(1)=f(3)+s(2)
4、求斐波拉锲数
5、猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就多吃了一个。第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来多少个桃子?并反向打印每天所剩桃子数。
函数的作用域:
头文件:
6、将出下列字符串中的表达式:
"1+1=2;2+1=3;2*8=16;4/4=1"
7、为用户提供功能模块: 对整型数组排序(冒泡)
bubble.c:
void bubble(int buf[100],int ilen);
//static void swap(int*,int*);
提供声明头文件:bubble.