函数(笔记)

目录

一、函数的定义

1.标准函数

2.自定义函数

函数定义格式:

举例:

3.函数的定义

(1)有参函数

(2)无参函数

(3)空函数

4.函数的申明与调用

(1)函数的申明

(2)函数的调用

(3)函数的返回值

实战列题:

二、函数的参数传递

1.传值形参

注意:

2.引用形参

3.数组传递

实战列题:

三、函数的递归与调用

1.递归思想

2.递归的实现方式

实战例题:

子问题分类讨论:


一、函数的定义

1.标准函数

标准函数有:sqrt(); pow(); memset(); sort(); abs(); strlen(); size();

2.自定义函数

函数定义格式:

返回值类型  函数名(形式参数表){

        函数体;

}

举例:

写一个函数,要求其功能为比较两个数中的最大数:

int maxx(int a,int b){  //注意:形式参数之间必须用“,”隔开
    if(a>b) return a;
    else if(b>a) return b;
    else return -1;
}

(注意:“max”在C++中也是标准函数,在写函数名的时候切记还要区分开,不要与之相同)

3.函数的定义

(1)有参函数

有参函数是指参函数表的函数,例如:

int maxx(int x,int y){

}

(2)无参函数

无参函数是指没有参数函数表的函数,例如:

void maxx(){  //无参函数通常不需要返回值,所以返回值类型用void

}

(3)空函数

例如:

函数名(){}

(空函数只占据一个位置,不做任何事,在大程序设计中,其用于扩充函数空能)

4.函数的申明与调用

(1)函数的申明

返回值类型  函数名(形式参数表);

(注意:一定要有“;”)

(2)函数的调用

例如:上面的比较两个数的调用:

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;
}

(3)函数的返回值

如果函数的返回值类型是void的话,其没有返回值,但可以有return ;

否则,函数体内必有return 形参&实参;

实战列题:

短信计费简单算术表达式求值哥德巴赫猜想哥德巴赫猜想计算三角形面积

二、函数的参数传递

1.传值形参

其实是指形式参数表中的参数,其类似局部变量,只会在函数体内改变,不影响在主函数中给他传值的变量(void函数没有此意)。

注意:

实参和形参必须一致,如个数和类型。

2.引用形参

其实是指形式参数表中的参数前有取地址符号“&”,例如:

int maxx(int &x,int &y){}

这些变量在函数内的改变,会影响在主函数内的传值变量。

3.数组传递

在函数中,数组传递的话,只需要写对其类型,数组名字和"[]"就可以了,例如:

int maxx(int a[]){}

实战列题:

素数回文数个数素数回文数个数素数对素数对回文日期回文日期

三、函数的递归与调用

1.递归思想

直接调用自己叫“直接递归”,两个函数互相调用叫“间接递归”。

2.递归的实现方式

用递归求解需以下三步:

(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);
}

点赞你要亮,关注干得漂亮

不关注点赞你就别走(好像我也留不住)

那就要个点赞吧(要求不大吧)

每天必须日更!!(绝对不可能)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值