函数的嵌套调用和递归调用

背景:最近一直在学习C++,从中学习到了很多以前没有听过的内容,现在来总结一下。

  嵌套调用:
  所谓嵌套调用就是在一个函数中调用其他函数的过程叫做函数的嵌套。C++中函数的定义是平行的,除了main()以外,都可以互相调用。函数不可以嵌套定义,但可以嵌套调用。比如函数1调用了函数2,函数2调用了函数3,这便形成了函数的嵌套调用。

例子:求三个数中最大数和最小数的差值。

分析:这里设计了3个函数,求3个数中最大值的函数max(),求3个数中最小值的函数min(),求差值的函数dif()。由主程序中调用dif(),dif()又调用max()和min()

代码:

/***************************************************************

  • 程序名:嵌套调用.cpp
  • 功能:函数的嵌套调用,求3个数中最大数和最小数的差值
    ****************************************************************/
    #include
    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;
}

运行结果:

递归调用:
在调用一个函数的过程中又直接或间接第调用该函数本身的这一现象,叫做函数的递归调用。

递归可以分为直接递归和间接递归调用。直接递归调用时在调用函数的过程中又调用该函数本身;间接递归调用是在调用f1()函数的过程中调用f2()函数,而f2()函数中又需要调用f1()。

递归方法是从结果出发,归纳出后一结果与前一结果直到初值为止存在的关系,要求通过分析得到:初值+递归函数,然后设计一个函数,这个函数不断使用下一级值调用自身,直到结果已知处。设计递归函数一般选择控制结构。

例子:求n!(递归结束的条件是n=1!)

代码:

扫描二维码关注公众号,回复: 3554867 查看本文章

/**************************************************

  • 递归调用.cpp
    
  • 功能:求n!
    

**************************************************/
#include
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; //返回函数值
}

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

猜你喜欢

转载自blog.csdn.net/qq_37831145/article/details/82813522