重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在C语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内, 不能再定义另一个函数, 即不能嵌套定义.
成都创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业资阳主机托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
在例子中,没有嵌套定义的.
int max(int a,int b)
{
if(ab)return a;
else return b;
}//这是在定义max
而main()函数中,
void main()
{
int max(int a,int b);//这是声明,被调用函数,定义在main函数前,可以省略.
int x,y,z;
printf("input two numbers:\n");
scanf("%d%d",x,y);
z=max(x,y);//这是调用.
printf("maxmum=%d",z);
}
所以不矛盾..
目前
函数
没有嵌套情况。
嵌套是函数A里面使用了函数B,则函数A
嵌套函数
B,函数B还可以嵌套函数C,函数C还可以嵌套函数D,根据不同的平台嵌套可以使用的
级数
不同。建议不要超过8级,因为运行
过程
中要出现调用函数,存在保留现场,
恢复现场
的
堆栈
操作,嵌套到一定级数,
错误
发生的概率
指数级
增加。
#include
"stdio.h"
int
main()
{
char
ch,ad;
printf("现在正在下雨吗?(y/n)\n");
ch=getchar();
if(ch=='y'||ch=='Y'||ch=='n'||ch=='N')
{
if(ch=='y'||ch=='Y')
printf("现在正在下雨。\n");
if(ch=='n'||ch=='N')
{
printf("现在没有下雨。\n");
printf("今天会有太阳吗?(y/n)\n");
ad=getchar();
if(ad=='y'||ad=='Y'||ad=='n'||ad=='N')
{if(ad=='y'||ad=='Y')
printf("今天是晴天。\n");
if(ad=='n'||ad=='N')
printf("今天是阴天。\n");
}
else
printf("第二次输入答案不在选择范围内。\n");
}
}
else
printf("第一次输入答案不在选择范围内。\n");
}
就是在一个函数的函数体定义另外一个函数。如
int
foo()
{
int
bar(){return
0;};
return
0;
}
但是C是不支持函数嵌套的,所以上面的写法是错误的。
嵌套调用这个名词是没有任何意义的,看到那本书上有这个名词赶紧扔掉吧!
递归是函数(或过程其他语言)直接或间接调用自已的做法!例如
1)直接递归调用
int f(int n){if(n==0)return 1;/*必须有这样的一步*/
return n*f(n-1);/*当然象这样简单计算不需要用递归!*/
}
2)问接调用
double g(double x,int n);
doube f(double x,int n){if(x=0n=0)retun 0;
if(n==0)return 0;if(n==1)return x;
if(n0)return f(1/x);
if(n1)return x*g(x,n/2);
return g(x,n/2);
}
double g(double x,n){return f(x*x,n);}