目录
一、函数的定义
1.标准函数
2.自定义函数
函数定义格式:
举例:
3.函数的定义
(1)有参函数
(2)无参函数
(3)空函数
4.函数的申明与调用
(1)函数的申明
(2)函数的调用
(3)函数的返回值
实战列题:
二、函数的参数传递
1.传值形参
注意:
2.引用形参
3.数组传递
实战列题:
三、函数的递归与调用
1.递归思想
2.递归的实现方式
实战例题:
子问题分类讨论:
标准函数有:sqrt(); pow(); memset(); sort(); abs(); strlen(); size();
返回值类型? 函数名(形式参数表){
? ? ? ? 函数体;
}
写一个函数,要求其功能为比较两个数中的最大数:
int maxx(int a,int b){ //注意:形式参数之间必须用“,”隔开
if(a>b) return a;
else if(b>a) return b;
else return -1;
}
(注意:“max”在C++中也是标准函数,在写函数名的时候切记还要区分开,不要与之相同)
有参函数是指有参函数表的函数,例如:
int maxx(int x,int y){
}
无参函数是指没有参数函数表的函数,例如:
void maxx(){ //无参函数通常不需要返回值,所以返回值类型用void
}
例如:
函数名(){}
(空函数只占据一个位置,不做任何事,在大程序设计中,其用于扩充函数空能)
返回值类型? 函数名(形式参数表);
(注意:一定要有“;”)
例如:上面的比较两个数的调用:
int maxx(int a, int b) {
if(a > b) return a ;
else if(b > a) return b ;
else return -1 ;
}
int main() {
int x, y ;
int a, b ;
cin >> x >> y >> a >> b ;
cout << maxx (x , y) << endl; //用逗号隔开
cout << maxx (a , b) << endl; //和上面的形式参数名一样也行
return 0;
}
如果函数的返回值类型是void的话,其没有返回值,但可以有return ;
否则,函数体内必有return 形参&实参;
短信计费,简单算术表达式求值,哥德巴赫猜想,哥德巴赫猜想,计算三角形面积。
其实是指形式参数表中的参数,其类似局部变量,只会在函数体内改变,不影响在主函数中给他传值的变量(void函数没有此意)。
实参和形参必须一致,如个数和类型。
其实是指形式参数表中的参数前有取地址符号“&”,例如:
int maxx(int &x,int &y){}
这些变量在函数内的改变,会影响在主函数内的传值变量。
在函数中,数组传递的话,只需要写对其类型,数组名字和"[]"就可以了,例如:
int maxx(int a[]){}
素数回文数个数,素数回文数个数,素数对,素数对,回文日期,回文日期。
直接调用自己叫“直接递归”,两个函数互相调用叫“间接递归”。
用递归求解需以下三步:
(1)提炼出问题中需要用函数求解的地方
(2)找出问题与子问题的关系
(3)确定子问题的边界值
求1+2+3+...,求1+2+3+...,斐波那契数列,斐波那契数列。
放苹果,放苹果,求最大公约数问题。
放苹果思路:
int fen(int m, int n) { //m为苹果,n为盘子
if(m == 1 || n == 1) return 1; //一个苹果或者一个盘子
if(m < n) return fen(m,m); //苹果数少于盘子数
if(m == n) return 1 + fen(m,n-1); //苹果数=盘子数
if(m > n) return fen(m, n-1) + fen(m-n, n); //苹果数>盘子数
}
求最大公约数思路:
int gcd(int a, int b) { //函数,递归写法
if(a & b == 0) return b;
return gcd(b, a & b);
}
点赞你要亮,关注干得漂亮
不关注点赞你就别走(好像我也留不住)
那就要个点赞吧(要求不大吧)
每天必须日更!!(绝对不可能)