为什么“C语言既可以嵌套定义又可以递归调用”是错的?
4个回答
展开全部
C语言可以递归调用,但是(函数)不能嵌套定义。
例如:
int fact(int n)
{
if (n == 0)
return 1;
else
return n * fact(n - 1);
}
图中的递归调用是允许的。
而:
void foo()
{
void bar()
{
// Some code
}
}
这样在函数内定义函数是不允许的。
不过结构体是可以嵌套定义的,例如:
struct test {
int a;
struct demo {
char b;
};
};
这样在结构体内定义结构体,是可以的。
展开全部
在c语言中可以进行递归调用和嵌套调用,不能进行嵌套定义。
递归调用:
void moon()
{
static int b=3;
printf("#");
if(b>0){
b--;
moon();
}
}这样就是运行了三次moon()函数,为递归调用。
嵌套调用:
void moon()
{
static int b=3;
printf("#");
if(b>0){
b--;
Max();
}
}
在一个函数中调用不同函数便为嵌套调用。
嵌套定义:
void moon()
{
static int b=3;
printf("#");
Max(){
printf("#");
}
}这种就是嵌套定义,在一个函数中定义不同函数,这种在c语言中并不允许。在一个函数中定义相同函数便为递归定义,照样是不正确的。
递归调用:
void moon()
{
static int b=3;
printf("#");
if(b>0){
b--;
moon();
}
}这样就是运行了三次moon()函数,为递归调用。
嵌套调用:
void moon()
{
static int b=3;
printf("#");
if(b>0){
b--;
Max();
}
}
在一个函数中调用不同函数便为嵌套调用。
嵌套定义:
void moon()
{
static int b=3;
printf("#");
Max(){
printf("#");
}
}这种就是嵌套定义,在一个函数中定义不同函数,这种在c语言中并不允许。在一个函数中定义相同函数便为递归定义,照样是不正确的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为中国那帮老头子迂腐!!
99年后的C语言就支持了,尽信书不如无书,用Dev C++或者Codeblocks测试一样就会发现,C语言完全支持函数嵌套定义,这是C99国际标准里的新规定,C99的一个新特性。实践是检验真理的唯一方法,既然写了代码,为什么不编译一下呢?或者在古老的VC6.0里编译不了,那,试试最新的VC呢?最新版的VC试一试?就是看不惯一些人人云亦云,把真理埋没了。
99年后的C语言就支持了,尽信书不如无书,用Dev C++或者Codeblocks测试一样就会发现,C语言完全支持函数嵌套定义,这是C99国际标准里的新规定,C99的一个新特性。实践是检验真理的唯一方法,既然写了代码,为什么不编译一下呢?或者在古老的VC6.0里编译不了,那,试试最新的VC呢?最新版的VC试一试?就是看不惯一些人人云亦云,把真理埋没了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可以嵌套定义的,只能递归调用
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询