【C++】函数的嵌套调用和递归调用

来源:互联网 发布:淘宝追加评价在哪 编辑:程序博客网 时间:2024/05/21 12:50

背景:最近一直在学习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;elset = n*fac(n - 1);return (t);}int main(){const int max_n = 12;int n;cout << "Input a interger number:";cin >> n;  //输入nif (n >= 1 && n <= max_n)cout << "Factorial of " <<n<<" is:" <<fac(n)<<endl; //输出函数值elsecout << "Invalid n." << endl;return 0;   //返回函数值}</span>


运行结果:



小结:刚开始学习C++,以后一点一点的总结。



0 0