欢迎来到天天文库
浏览记录
ID:59194020
大小:154.00 KB
页数:33页
时间:2020-09-26
《第 3 章━━函数的递归调用、重载、默认参数ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++程序设计第3章(2)━━函数的递归调用、重载、默认参数1主要内容函数的递归调用递归函数的执行过程函数的重载重载函数的注意事项带默认值的形参内联函数程序的多文件结构编译预处理2函数的递归调用函数的递归调用:①直接递归调用:指在一个函数A的定义中,出现了调用自身A的情况,这种调用关系称为直接递归调用,而函数A就是递归函数。②间接递归调用:指在一个函数A的定义中,调用了函数B,而在函数B的定义中又调用了函数A,这种调用关系称为间接递归调用,而函数A也是递归函数。递归算法的关键在于:①确立递归的公式②分析递归的
2、结束条件递归函数设计的一般方法:①先判断递归结束条件②再进行递归调用3【例】(用递归算法求n!。)分析:①确立递归公式:n!=n×(n-1)!②分析递归结束条件:当n=0或n=1时,n!的值为1。#include#includeintfun(intn)//函数fun()的功能是:求n!{if(n==0
3、
4、n==1)return1;//先判断递归结束条件return(n*fun(n-1));//再进行递归调用}voidmain(){intn;cout<<“请输入一个正
5、整数:”;cin>>n;if(n<0){cout<<“输入数据有错!”;exit(0);}cout<6、urn1fun(1)函数递推递推递推回归回归回归3操作系统执行状态和返回地址main()局部变量n3操作系统执行状态和返回地址main()局部变量n3main()函数执行状态和返回地址fun(3)形参变量n3操作系统执行状态和返回地址main()局部变量n3main()函数执行状态和返回地址fun(3)形参变量n2fun(3)函数执行状态和返回地址fun(2)形参变量n3操作系统执行状态和返回地址main()局部变量n3main()函数执行状态和返回地址fun(3)形参变量n2fun(3)函数执行状态和返回地7、址fun(2)形参变量n1fun(2)函数执行状态和返回地址fun(1)形参变量n5递归函数的执行过程递归函数的执行过程:①递归函数的执行过程比较复杂,往往都存在着连续的递归调用,其执行过程可分为“递推”和“回归”两个阶段,先是一次一次不断的递推过程,直到符合递归结束条件,然后是一层一层的回归过程。②而其中的每一次递归调用,系统都要在栈中分配空间以保存该次调用的返回地址、参数、局部变量,因此在递推阶段,栈空间一直处于增长状态,直到遇到递归结束条件,然后进入回归阶段,栈空间反向依次释放。③在递归的执行过程中,递8、归结束条件非常重要,它控制“递推”过程的终止,因此在任何一个递归函数中,递归结束条件都是必不可少的,否则将会一直“递推”下去。导致无穷递归。递归算法的缺点:内存消耗巨大,且连续地调用和返回操作占用较多的CPU时间。递归算法的优点:算法描述简洁易懂。6【例】(分析下面递归函数的执行过程,并给出程序运行结果。)#includevoidsub(charc){cout<9、‘e’;sub(ch);}运行:edcbabcde局部变量:ch=‘e’执行:…sub(‘e’)main()函数形参变量:c=‘e’执行:cout<10、returnsub(‘a’)函数递推回归形参变量:c=‘c’执行:cout<
6、urn1fun(1)函数递推递推递推回归回归回归3操作系统执行状态和返回地址main()局部变量n3操作系统执行状态和返回地址main()局部变量n3main()函数执行状态和返回地址fun(3)形参变量n3操作系统执行状态和返回地址main()局部变量n3main()函数执行状态和返回地址fun(3)形参变量n2fun(3)函数执行状态和返回地址fun(2)形参变量n3操作系统执行状态和返回地址main()局部变量n3main()函数执行状态和返回地址fun(3)形参变量n2fun(3)函数执行状态和返回地
7、址fun(2)形参变量n1fun(2)函数执行状态和返回地址fun(1)形参变量n5递归函数的执行过程递归函数的执行过程:①递归函数的执行过程比较复杂,往往都存在着连续的递归调用,其执行过程可分为“递推”和“回归”两个阶段,先是一次一次不断的递推过程,直到符合递归结束条件,然后是一层一层的回归过程。②而其中的每一次递归调用,系统都要在栈中分配空间以保存该次调用的返回地址、参数、局部变量,因此在递推阶段,栈空间一直处于增长状态,直到遇到递归结束条件,然后进入回归阶段,栈空间反向依次释放。③在递归的执行过程中,递
8、归结束条件非常重要,它控制“递推”过程的终止,因此在任何一个递归函数中,递归结束条件都是必不可少的,否则将会一直“递推”下去。导致无穷递归。递归算法的缺点:内存消耗巨大,且连续地调用和返回操作占用较多的CPU时间。递归算法的优点:算法描述简洁易懂。6【例】(分析下面递归函数的执行过程,并给出程序运行结果。)#includevoidsub(charc){cout<9、‘e’;sub(ch);}运行:edcbabcde局部变量:ch=‘e’执行:…sub(‘e’)main()函数形参变量:c=‘e’执行:cout<10、returnsub(‘a’)函数递推回归形参变量:c=‘c’执行:cout<
9、‘e’;sub(ch);}运行:edcbabcde局部变量:ch=‘e’执行:…sub(‘e’)main()函数形参变量:c=‘e’执行:cout<10、returnsub(‘a’)函数递推回归形参变量:c=‘c’执行:cout<
10、returnsub(‘a’)函数递推回归形参变量:c=‘c’执行:cout<
此文档下载收益归作者所有