【C++】函数进阶用法

一、函数默认参数

语法: 返回值类型 函数名 (形参 = 默认值){}

int func(int a,int b = 20)
{
    return a + b;
}

int main()
{
    cout << "a+b=" << func(10) << endl;
    
    system("pause");
    return 0;
}

** 如果在调用函数时,我们自己填入参数,函数则会使用传入的参数,而不会使用默认值 **

int func(int a,int b = 20)
{
    return a + b;
}

int main()
{
    cout << "a+b=" << func(10,30) << endl;
    
    system("pause");
    return 0;
}

** 如果某个位置使用了默认参数,那么从这个位置往后,参数必须有默认值 **

** 如果函数声明有默认参数,函数实现就不能有默认参数 **

** 声明和实现只能有一个有默认参数 **

二、函数占位参数

语法:返回值类型 函数名 (数据类型){ }

void func(int a, int)
{
    cout << "this right" << endl;
}

int main (){
    
    func(10,10); //占位参数必须填补

    system("pause");
    return 0;
}

三、函数重载

作用:提高复用性

函数重载满足条件:①同一作用域 ②函数名称相同 ③函数参数类型 / 个数 / 顺序不同

** 函数返回值不可以作为函数重载条件 **

void func()
{
    cout << "调用1" << endl;
}

void func(int a)
{
    cout << "调用2" << endl;
}

四、函数重载注意事项

** 引用做函数参数 **

void fun(int &a)
{
    cout << "调用1" << endl;
}

void fun(const int &a)
{
    cout << "调用2" << endl;
}

int main(){

    //调用1
    int a = 10;
    fun(a);    

    //调用2    
    fun(10);
}

** 默认参数做函数参数 **

void fun (int a, int b = 10)
{
    cout << "调用成功1" << endl;
}

void fun (int a)
{
    cout << "调用成功2" << endl;
}

此时两个函数为同一个函数,编译器无法区分两个函数的区别,出现二义性报错,导致调用报错

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递归是一种思维方式,通过函数自身调用来解决问题。递归的基本原理是将一个大问题划分为相同但规模较小的子问题,直到子问题可以直接解决。递归的进阶练习题可以帮助我们更深入地理解递归的应用。 举个例子,我们来看一个递归进阶练习题:求斐波那契数列的第n项。斐波那契数列的规律是前两个数都是1,从第三个数开始,每个数都是前两个数之和。 使用递归可以很方便地解决这个问题。我们可以定义一个函数fibonacci(n),输入一个整数n,返回斐波那契数列的第n项。 首先,我们需要考虑递归的终止条件。当n的值是1或2时,直接返回1,因为斐波那契数列的前两个数都是1。 当n大于2时,我们需要调用fibonacci(n-1)和fibonacci(n-2)来计算前两项的和。具体操作如下: 1. 若n等于1或2,返回1; 2. 否则,返回fibonacci(n-1) + fibonacci(n-2)。 下面是一个具体的实现示例: ```python def fibonacci(n): if n == 1 or n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) n = 6 result = fibonacci(n) print("斐波那契数列的第{}项是:{}".format(n, result)) ``` 输出结果为: ``` 斐波那契数列的第6项是:8 ``` 通过递归调用,我们可以方便地求解斐波那契数列的第n项。这个例子展示了递归的思维方式和应用。不过需要注意的是,在使用递归时要注意终止条件的设定,否则可能会导致无限递归的情况发生。在实际应用中,我们也可以考虑使用迭代等方法来解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值