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

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

简介

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

一、递归

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

//默认实参是一个表达式,而且默认值用作实参,则在调用函数时求解该表达式。
}
### Gradle 7.3.3 二进制分发版下载 Gradle 提供了多种方式来获取其不同版本的发行包。对于 Gradle 7.3.3 的二进制分发版,可以通过访问官方的 Gradle 发布页面进行下载[^1]。 以下是具体的下载地址以及相关信息: #### 下载链接 Gradle 官方网站提供了稳定版本的二进制分发版下载链接。针对 Gradle 7.3.3 版本,可以使用以下 URL 进行下载: - **Binary-only Distribution**: ```plaintext https://services.gradle.org/distributions/gradle-7.3.3-bin.zip ``` 此链接仅包含运行 Gradle 所需的核心文件,不包含源码和其他文档[^1]。 如果需要完整的分发版(包括源码和文档),可使用以下链接: - **Complete Distribution (with sources and documentation)**: ```plaintext https://services.gradle.org/distributions/gradle-7.3.3-all.zip ``` #### 验证下载文件的真实性 为了确保所下载的文件未被篡改,建议验证其校验值。Gradle 官网提供 SHA-256 哈希值用于验证文件完整性。可以在以下位置找到对应的哈希值: ```plaintext https://services.gradle.org/distributions/ ``` 通过对比本地计算的 SHA-256 和官网提供的值,确认文件的一致性[^1]。 #### 使用示例 下载完成后,解压 ZIP 文件即可获得 Gradle 可执行程序及相关依赖项。以下是一个简单的命令行操作示例: ```bash # 下载并解压 Binary 分发版 wget https://services.gradle.org/distributions/gradle-7.3.3-bin.zip unzip gradle-7.3.3-bin.zip # 设置环境变量以便全局调用 export PATH=$PATH:/path/to/gradle-7.3.3/bin ``` 完成以上步骤后,可通过 `gradle --version` 来验证安装是否成功[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值