《C++语言程序设计》课程教学课件(PPT讲稿)第7章 函数与指针

第7章函数与指针7.1 1递归函数7.2函数重载7.3指针和函数7.4带参数的main()函数7.5内联函数7.6无参函数7.7void和const类型的指针
0 第7章 函数与指针 • 7.1 递归函数 • 7.2 函数重载 • 7.3 指针和函数 • 7.4 带参数的main()函数 • 7.5 内联函数 • 7.6 无参函数 • 7.7 void和const类型的指针

本章目标掌握递归函数掌握函数重载2.+美(>3、理解指针和函数的几种关系
1 本章目标 ➢ 1、掌握递归函数 ➢ 2、掌握函数重载 ➢ 3、理解指针和函数的几种关系

7.1递归函数C++中,允许函数进行递归调用。递归调用:允许一个函数直接或间接地调用自身。若一个函数体内直接包含了调用该函数本身的语句,则称为一直接递归调用,该函数是直接递归函数。一若一个函数体内间接包含对自己的调用,则称为一一间接递归调用,该函数是间接递归函数
2 7.1 递归函数 • C++中,允许函数进行递归调用。 • 递归调用:允许一个函数直接或间接地调用自身。 • 若一个函数体内直接包含了调用该函数本身的语句,则 称为——直接递归调用,该函数是直接递归函数。 • 若一个函数体内间接包含对自己的调用,则称为——间 接递归调用,该函数是间接递归函数

7.1递归函数递归算法一个直接或间接地调用自身的算法称为递归算法。使用递归函数的优点:程序方便简洁,可读性好。编写递归函数的两要素:(1)递归定义的公式(2)递归终止的条件
3 7.1 递归函数 • 递归算法 一个直接或间接地调用自身的算法称为递归算法。 • 使用递归函数的优点: 程序方便简洁,可读性好。 • 编写递归函数的两要素: • (1)递归定义的公式 • (2)递归终止的条件

7.1递归函数例7-1:采用递归算法求n!算法:由阶乘的概念可以写出其递归的定义0! = 1n! = n * (n-1)!
4 7.1 递归函数 例7-1:采用递归算法求n! 算法:由阶乘的概念可以写出其递归的定义 0! = 1 n! = n * (n-1)!

7.1递归函数1/例7-1:采用递归算法求n!#includeusingnamespacestd:1/函数fac():求阶乘的递归函数int fac(intn)if(n<0)11不能求负数的阶乘return -1;1/的阶乘为elseif(n==0)returnelsereturnn*fac(n-1);1/nt为(n-1)乘以n
5 7.1 递归函数

7.1递归函数例7-1:采用递归算法求n!分析:用递归函数fac()计算5!时的执行过程如图7-1所示。fac(5)fac (4)fac(3)main(函数中调用调用调用调用fac (5)5*fac(4)4*fac(3)3*fac(2)返回6输出120返回120返回24fac (0)fac(1)fac(2)调用调用fac (0)=11*fac (0)2*fac(1)返回1返回1返回2图7-1递归函数的调用顺序
6 7.1 递归函数 例7-1:采用递归算法求n! 分析:用递归函数fac( )计算5!时的执行过程如图7-1所示。 图7-1 递归函数的调用顺序 调用 fac(5) 输出120 main()函数中 调用 5*fac(4) 返回120 fac(5) 调用 4*fac(3) 返回24 fac(4) 调用 3*fac(2) 返回6 fac(3) 调用 2*fac(1) 返回2 fac(2) 调用 1*fac(0) 返回1 fac(1) fac(0)=1 返回1 fac(0)

7.1递归函数注意:使用递归函数时,要特别注意不要造成死循环。一个问题要能够转换为递归来处理,必须满足以下条件:(1)必须包含一种或多种非递归的基本形式。(2)一般形式必须能最终转换到基本形式。(3)由基本形式来结束递归。注意:递归调用在堆栈中临时占据的存储区域是较多的,在实际运行时,递归调用的时间效率较差
7 7.1 递归函数 • 注意: 使用递归函数时,要特别注意不要造成死循环。 • 一个问题要能够转换为递归来处理,必须满足以下条件: • (1)必须包含一种或多种非递归的基本形式。 • (2)一般形式必须能最终转换到基本形式。 • (3)由基本形式来结束递归。 • 注意:递归调用在堆栈中临时占据的存储区域是较多的,在实 际运行时,递归调用的时间效率较差

7.1递归函数经典递归问题:Ackerman函数Fibonacci数列八皇后问题梵塔问题
8 7.1 递归函数 • 经典递归问题: • Ackerman函数 • Fibonacci数列 • 八皇后问题 • 梵塔问题

7.1递归函数例7-2:梵塔(hanoi塔)问题根据古印度神话,在贝拿勒斯的圣庙里安放着一个铜板,板上插有3根一尺长的宝石针。印度教的主神梵天在创造世界的时候,在其中的一根针上摆了由小到大共64片中间有孔的金片。无论白天和黑夜,都有一位僧侣负责移动这些金片,规则是一次只能将一片金片移到另一根针上,并且在任何时候以及任一根针上,小片永远在大片的上面。当所有的64片金片都由最初的那根针移到另一根针上时,这世界就将在一片霹雳中消失
9 7.1 递归函数 例7-2:梵塔(hanoi塔)问题 根据古印度神话,在贝拿勒斯的圣庙里安放着一个铜 板,板上插有3根一尺长的宝石针。印度教的主神梵天在 创造世界的时候,在其中的一根针上摆了由小到大共64 片中间有孔的金片。无论白天和黑夜,都有一位僧侣负 责移动这些金片,规则是一次只能将一片金片移到另一 根针上,并且在任何时候以及任一根针上,小片永远在 大片的上面。当所有的64片金片都由最初的那根针移到 另一根针上时,这世界就将在一片霹雳中消失
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C++语言程序设计》课程教学课件(PPT讲稿)第8章 结构化设计方法.pptx
- 南京理工大学:《C++程序设计》课程教学资源(PPT课件,完整讲稿,共十四章).pptx
- 清华大学出版社:《C++语言程序设计教程》教材书籍PDF电子版(第二版,共十五章,著:钱能).pdf
- 《微机原理及应用》课程教学资源(PPT课件)第7章 并行接口.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第10章 A/D和D/A转换.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第5章 存储器.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第2章 16位和32位微处理器.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第3章 16位32位微处理器指令系统.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第4章 汇编语言程序设计.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第6章 输入输出与中断.pptx
- 《微机原理及应用》课程教学资源(作业习题)微机原理及应用习题集(含参考答案).docx
- 《微机原理及应用》课程教学资源(PPT课件)第2章 16位和32位微处理器.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第3章 16位32位微处理器指令系统.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第1章 微型计算机基础.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第8章 串行接口.pptx
- 《微机原理及应用》课程教学资源(PPT课件)第9章 计数器定时器.pptx
- 《ARM技术及其应用》课程教学资源(文献资料)isep_MMcourse_MariaTrocan.pdf
- 《ARM技术及其应用》课程教学资源(文献资料)isep_MPEG-4.pptx
- 《ARM技术及其应用》课程教学资源(文献资料)Linux Kernel Development 3rd Edition - 2010.pdf
- 《ARM技术及其应用》课程教学资源(文献资料)Professional Linux Kernel Architecture - 2008.pdf
- 《C++语言程序设计》课程教学课件(PPT讲稿)第5章 函数.pptx
- 《C++语言程序设计》课程教学课件(PPT讲稿)第6章 指针.pptx
- 《C++语言程序设计》课程教学课件(PPT讲稿)第4章 数组与结构.pptx
- 《C++语言程序设计》课程教学课件(PPT讲稿)第3章 控制结构.pptx
- 《C++语言程序设计》课程教学课件(PPT讲稿)第1章 C++语言简介.pptx
- 《C++语言程序设计》课程教学课件(PPT讲稿)第2章 基本数据类型与表达式.pptx
- 《计算机文化基础》课程教学资源(习题与答案)期末复习题.docx
- 《计算机文化基础》课程教学资源(习题与答案)第1章习题.docx
- 《计算机文化基础》课程教学资源(习题与答案)第3章习题.docx
- 《计算机文化基础》课程教学资源(习题与答案)第2章习题.docx
- 《计算机文化基础》课程教学资源(习题与答案)第5章习题.docx
- 《计算机文化基础》课程教学资源(习题与答案)第4章习题.docx
- 《计算机文化基础》课程教学资源(习题与答案)第6章习题.docx
- 《计算机文化基础》课程教学资源(授课教案).docx
- 《计算机文化基础》课程教学课件(PPT讲稿)第二章 Windows7操作系统 1.1 认识Windows7 1.2 Windows7的基本操作.pptx
- 《计算机文化基础》课程教学课件(PPT讲稿)第二章 Windows7操作系统 1.3 Windows7的文件管理 1.4 Windows7的系统设置 1.5 Windows7的磁盘管理.pptx
- 《计算机文化基础》课程教学课件(PPT讲稿)电子表格软件Excel2010的使用.pptx
- 《计算机文化基础》课程教学课件(PPT讲稿)第一章 计算机基础知识 1.2 数制与编码.pptx
- 《计算机文化基础》课程教学课件(PPT讲稿)第一章 计算机基础知识 1.3 键盘与输入法.pptx
- 《计算机文化基础》课程教学课件(PPT讲稿)第一章 计算机基础知识 1.1 认知计算机.pptx
