当前位置 博文首页 > ljmhxs的博客:函数(笔记)

    ljmhxs的博客:函数(笔记)

    作者:[db:作者] 时间:2021-08-19 13:36

    目录

    一、函数的定义

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

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

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

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

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

    cs