7.1递归函数例7-9:采用递归算法寻找一个整型数组中的最大元素算法:数组只有1个元素,即为最大;2、要找a[i],…,a[j]中的最大元素,可以先找a[i+1],…,a[j]中的最大元素,再与a[比较,即得递归定义;max_element(a[i], a[i+1],...,a[j])max_element (a[i+1], ,a[j]):15
15 7.1 递归函数 例7-9:采用递归算法寻找一个整型数组中的最大元素 算 法: • 1、数组只有1个元素,即为最大; • 2、要找a[i],.,a[j]中的最大元素,可以先找a[i+1],.,a[j] 中的最大元素,再与a[i]比较,即得递归定义; max_element(a[i],a[i+1],.,a[j]) { max_element(a[i+1],.,a[j]); }
7.1递归函数例7-9:采用递归算法寻找一个整型数组中的最大元素#include<iostream>using namespace std;int nax elenent(const int all,int louer,int upper)int nax;if(lower==upper)return a[lowerl;else1max =maxelement(a,lower+1,upper);if(a[lowerj>=max)return a[lower];elsereturn max;int nain()intA[119,33,69,55,77,12,52);cout<<"The naximum elenent of the array is:"<<max element(A,,6)<<endl;returno;注意:const inta[]表明数组a[]中的元素值不可改变。16
16 7.1 递归函数 例7-9:采用递归算法寻找一个整型数组中的最大元素 注意:const int a[ ] 表明数组a[ ]中的元素值不可改变
7.1递归函数许多问题既可以用递归的方法求解,也可以用一般的循环结构求解。递归程序的优点:结构清晰、简单,容易阅读和理解。递归程序的缺点:,在目标代码中,要通过堆栈来保存大量的中间状态;,执行速度较慢,算法的效率比较低。为了提高程序效率,有时需要将递归算法转换为非递归算法,达到消除递归的目的。17
17 7.1 递归函数 • 许多问题既可以用递归的方法求解,也可以用一般的循 环结构求解。 • 递归程序的优点:结构清晰、简单,容易阅读和理解。 • 递归程序的缺点: • 在目标代码中,要通过堆栈来保存大量的中间状态; • 执行速度较慢,算法的效率比较低。 • 为了提高程序效率,有时需要将递归算法转换为非递归 算法,达到消除递归的目的
7.2 正函数重载在人类的自然语言中,同一个词在不同场合可以有许多种不同的含义,即一词多义或词被重载C++中也有类似情况,例如C++标准函数库中:int abs(int);double fabs (double) ;。long labs(long):这3个函数在头文件cmath中声明,功能依次为求整型量双精度实型量和长整型量的绝对值。18
18 7.2 函数重载 • 在人类的自然语言中,同一个词在不同场合可以有许多 种不同的含义,即一词多义或词被重载。 • C++中也有类似情况,例如C++标准函数库中: • int abs(int); • double fabs(double); • long labs(long); • 这3个函数在头文件cmath中声明,功能依次为求整型量、 双精度实型量和长整型量的绝对值
7.21函数重载求不同类型数的绝对值,要用不同的函数实现,会增加难度,容易出错。解决方法:在C++中,使用函数重载将求绝对值用同一函数形式调用。函数重载:一组参数和返回值不同的函数共用一个函数名。19
19 7.2 函数重载 • 求不同类型数的绝对值,要用不同的函数实现,会增加 难度,容易出错。 • 解决方法: 在C++中,使用函数重载将求绝对值用同一函数形式调用。 • 函数重载: 一组参数和返回值不同的函数共用一个函数名