【C++】函数的嵌套调用和递归调用
2016-01-24 11:01
323 查看
背景:最近一直在学习C++,从中学习到了很多以前没有听过的内容,现在来总结一下。
例子:求三个数中最大数和最小数的差值。
分析:这里设计了3个函数,求3个数中最大值的函数max(),求3个数中最小值的函数min(),求差值的函数dif()。由主程序中调用dif(),dif()又调用max()和min()
代码:
运行结果:
递归可以分为直接递归和间接递归调用。直接递归调用时在调用函数的过程中又调用该函数本身;间接递归调用是在调用f1()函数的过程中调用f2()函数,而f2()函数中又需要调用f1()。
递归方法是从结果出发,归纳出后一结果与前一结果直到初值为止存在的关系,要求通过分析得到:初值+递归函数,然后设计一个函数,这个函数不断使用下一级值调用自身,直到结果已知处。设计递归函数一般选择控制结构。
例子:求n!(递归结束的条件是n=1!)
代码:
运行结果:
小结:刚开始学习C++,以后一点一点的总结。
嵌套调用:
所谓嵌套调用就是在一个函数中调用其他函数的过程叫做函数的嵌套。C++中函数的定义是平行的,除了main()以外,都可以互相调用。函数不可以嵌套定义,但可以嵌套调用。比如函数1调用了函数2,函数2调用了函数3,这便形成了函数的嵌套调用。例子:求三个数中最大数和最小数的差值。
分析:这里设计了3个函数,求3个数中最大值的函数max(),求3个数中最小值的函数min(),求差值的函数dif()。由主程序中调用dif(),dif()又调用max()和min()
代码:
<span style="font-size:18px;">/*************************************************************** * 程序名:嵌套调用.cpp * 功能:函数的嵌套调用,求3个数中最大数和最小数的差值 ****************************************************************/ #include<iostream> using namespace std; int max(int x, int y, int z) { int t; t = x > y ? x : y; return(t > z ? t : z); } int min(int x, int y, int z) { int t; t = x < y ? x : y; return(t < z ? t : z); } int dif(int x, int y, int z) { return max(x, y, z) - min(x, y, z); } int main() { int a, b, c; cin >> a >> b >> c; cout << "Max-Min=" << dif(a, b, c) << endl; return 0; }</span>
运行结果:
递归调用:
在调用一个函数的过程中又直接或间接第调用该函数本身的这一现象,叫做函数的递归调用。递归可以分为直接递归和间接递归调用。直接递归调用时在调用函数的过程中又调用该函数本身;间接递归调用是在调用f1()函数的过程中调用f2()函数,而f2()函数中又需要调用f1()。
递归方法是从结果出发,归纳出后一结果与前一结果直到初值为止存在的关系,要求通过分析得到:初值+递归函数,然后设计一个函数,这个函数不断使用下一级值调用自身,直到结果已知处。设计递归函数一般选择控制结构。
例子:求n!(递归结束的条件是n=1!)
代码:
<span style="font-size:18px;">/************************************************** * 递归调用.cpp * 功能:求n! **************************************************/ #include<iostream> using namespace std; int fac(int n) //递归函数 { int t; if (n == 1) t = 1; else t = n*fac(n - 1); return (t); } int main() { const int max_n = 12; int n; cout << "Input a interger number:"; cin >> n; //输入n if (n >= 1 && n <= max_n) cout << "Factorial of " <<n<<" is:" <<fac(n)<<endl; //输出函数值 else cout << "Invalid n." << endl; return 0; //返回函数值 }</span>
运行结果:
小结:刚开始学习C++,以后一点一点的总结。
相关文章推荐
- C++动态内存分配
- Codeforces Round #340 (Div. 2):B. Chocolate
- 程序实践系列(七)C++概述
- Codeforces Round #340 (Div. 2):A. Elephant
- C语言原码反码补码与位运算.
- VS2012中C语言不支持匿名联合,导出函数不界定范围
- c++中extern的用处
- C++类型转换解析
- c语言俄罗斯方块
- C++的复习
- 1081. Rational Sum (20)
- C++程序员对c 说的话
- Visual C++ 64 位迁移的常见问题
- c++回调函数 callback
- C语言中的排序算法--冒泡排序,选择排序,希尔排序
- 求解数独的C++实现
- C++ 友员
- HDU 5611: Baby Ming and phone number
- HDU 5610: Baby Ming and Weight lifting
- C++ 不定个数参数写法