函数嵌套是语言特性,递归调用是逻辑思想。
大安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
1
函数嵌套
函数嵌套允许在一个函数中调用另外一个函数,比如有三个函数
例:
funca()
{
funcb();
}
funcb()
{
funcc();
}
funcc()
{
cout
"hello"
评论
加载更多
比如,你有一个函数
void example()
{
......
}
还有一个函数
void forexample()
{
.....
void example();
example();
}
就如你看到的,void forexample()函数里面,有用到example()函数。这就是你想知道的函数嵌套。
满意请采纳,如果还有问题,可以加我百度HI
在c中可以嵌套调用函数,但不可以嵌套定义函数。
函数嵌套调用是允许的。
int a()
{
b();//调用函数b
}
函数嵌套定义是错误的。
int a()
{
int b() //在函数a中定义函数b
{
……
……
}
#include stdio.h
int func(int i); //函数的原型定义
int main(void)
{
int n;
float y;
scanf_s("%d",n); //n没有被初始化,为任意值,此时是读取一个值给n,删去,直接给n初始化为5也可以 scanf_s是VS2013编译器专用的,请自行改成scanf
y = func(n); /*函数的调用*/
printf("%d!=%f", n, y); /*for语句多余*/
return 0;
}
int func(int i)
{
int sum=0;
if ((i == 0) || (i == 1))
sum = 1;
else
sum = func(i-1) * i; // i的值没有变化,一直都是读入的值,不会终止递归。
return sum;
}
你可以这么理解,所谓递归调用,就是调用一系列内容相同的子程序,这些子程序的参数和自己定义的变量都是不相同的,互相不干扰,调用一次需要等待该次调用返回后继续执行剩下语句。
假设调用:
s=qys(12,14);
qys(12,14): x=12,y=14, y不等于0, qys(y,x%y)[qys(14,12)], 等待这个调用完成后再返回结果
qys(14,12): x=14,y=12, y不等于0, qys(y,x%y)[qys(12,2)], 等待这个调用完成后再返回结果
qys(12,2): x=12,y=2, y不等于0, qys(y,x%y)[qys(2,0)], 等待这个调用完成后再返回结果
qys(2,0): x=2,y=0, y等于0, 返回x值即2
qys(12,2): qys返回2,返回2
qys(14,12): qys返回2,返回2
qys(14,12): qys返回2,返回2
赋值:s=2