知识点巩固-函数

今天带大家巩固一下函数的知识点。

一、返回信息的函数

顾名思义,这类函数的效果就是返回一个变量,通俗点说整个函数就是一个变量。这种函数一般都是自制函数,官方的一般都是用CMath库里的函数,如:

cout<<abs(n); //这行代码的效果是输出n变量的绝对值

注意:这类函数不能单独成行!

abs(n); //这行代码是一个错误案例,它什么都不能完成
n=abs(n); //这才能起到作用
/*把abs(n)单独成行,就好像在一行上放了一个1一样,没有用处*/

二、只是单纯地做事的函数

这类的官方函数比较多,cout cin for if等大家熟知的函数都属于这一类。

与返回变量的函数不同,这类函数没有返回值,因而它可以单独成行。

下面是一个典型的例子:

for(,,){break;} //Q:这个循环循环了几次?

三、自定义函数

自定义函数并非官方给的,而是我们自己通过拼接官方函数和各种运算制造出来的。

1. 定义

自定义函数的定义可参照一个公式:

返回值种类 /*如int,string等,没有返回值填void*/ (参数1种类 参数名,参数2种类 参数名 /*也可以只有一个参数或更多参数*/){
    代码
    return 返回值;//返回值需与上面的返回值种类对应;如果是void则不用填返回值,或也可以直接把return省略掉
}

以下是一个有返回值的实例:

int add(int a,int b){
    int c=a+b;
    return a+b;
}

相应的,以下是一个无返回值的实例:

void output(string n){
    cout<<n;
    //return;
}
2. 引用

首先,大部分引用的注意事项已经讲过了,在此不多赘述。此处重申一下递归:

(1) 直接递归

直接递归指自己直接引用自己,如:

int add(int n){
    if(n==1) return n;
    return n+add(n-1);
}

注意:第2行的判断被称为递归边界。如果没有递归边界,递归将成为一个死循环。

(2) 间接递归

间接递归指多个函数互相循环引用,如:

int a(int n){
    if(b(n)==0) return n;
    return n+b(n-1);
}
int b(int n){
    if(a(n)==0) return n;
    return n+a(n-1);
}

此处因为n的奇偶性不定,因此设置了两个边界判断(第2行和第6行)来确保结果的准确性。如果不这么设置,结果可能会比真正的结果少1。

四、函数和递归的用途

一般来说,在做题时复杂的算法都会放进函数里。反正我是这么做的

递归则更为重要,dp大部分都要用递归,别的算法也多多少少涉及一点。

五、小结

总而言之,函数在各种算法中显得尤为重要,尤其是对递归的使用。

希望这篇文章能帮到你。

最后别忘了素质三连

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值