C++7.3.3--7.4递归、默认实参

本文深入探讨了递归函数的概念及其应用,如阶乘计算和最大公约数求解,并详细解释了函数声明的重要性,包括默认实参的使用和初始化。内容涵盖了C语言中的关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

===================================================================================================

一、递归

1、递归

  • 直接或间接调用自己的函数称为递归函数。

  • 一个简单的递归函数例子就是阶乘的计算。

  • 递归函数必须定义一个终止条件,否则函数就会“永远递归下去”,意味着函数会一直调用自身直到程序栈耗尽。下面val为1是终止条件。

  • 主函数main不能调用自身

//求数n到1的乘积
int factorial(int val){
   if(val>1)
     return factorial(val-1)*val;
   return 1;
}
//求最大公约数
int rgcd(int v1,int v2){
    if(v2!=0)
      return rgcd(v2,v1%v2);
    return v1;
}

二、函数声明

1、函数的声明

  • 正如变量必须先声明后使用一样,函数在使用之前必须先声明。

  • 与变量的定义类似,函数的声明也可以和定义分离;

  • 一个函数只能定义一次,但可以多次声明。

  • 函数声明由函数返回类型、函数名、形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。

  • 函数返回类型、函数名、形参列表称为函数原型,函数原型描述了函数的接口。

  • 函数原型为定义函数的程序员和使用函数的程序员之间提供了接口,在使用函数时,程序员只对函数原型编程即可。

  • 变量可在头文件中声明,在源文件中定义,函数也可以。

  • 把函数声明直接放到头文件中,这样可以确保对于指定函数其所有声明保持一致。如果函数接口发送变化,则只要修改其唯一的声明即可。

2、默认实参

  • 调用函数时,可以省略有默认值的实参,编译器会 为我们省略的实参提供默认值。

  • 默认实参是通过给形参表中的形参提供明确的初始值来指定的,程序员可为一个或多个形参定义默认值,但是,如果有一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参,也就是说,具有默认实参的形参应该出现在形参表的末尾。

  • 可以把一个char值传递给int型形参,反之亦然。

int fun(int a,int b=9,int c=10);//可以!!!
string screenInit(string::size_type height=24,
                  string::size_type width=80,
                  char background=' ');
  • 调用包含默认实参的函数时,可以为该形参提供实参,也可以不提供。如果提供了实参,则它将覆盖默认的实参值,否则,函数使用默认实参值。
//下面的调用都是正确的,如果没有提供实参,将使用默认的实参,如果提供了那么将会覆盖默认的实参
string screen;
screen=screenInit();
screen=screenInit(66);
screen=screenInit(66,256);
screen=screenInit(66,256,'#');

3、默认实参的初始化

默认实参可以是任何适当类型的表达式:

string::size_type screenHeight();
string::size_type screenWidth(string::size_type);
char screenDefault(char = ' ');
string screenInit(
string::size_type height =screenHeight(),
string::size_type width =screenWidth(screenHeight()),
char background = screenDefault())

//默认实参是一个表达式,而且默认值用作实参,则在调用函数时求解该表达式。
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值