为什么“C语言既可以嵌套定义又可以递归调用”是错的?

 我来答
百度网友657978d
推荐于2018-02-27 · TA获得超过197个赞
知道答主
回答量:85
采纳率:100%
帮助的人:19.6万
展开全部

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;
    };
};

这样在结构体内定义结构体,是可以的。

改竹筱Jh
2020-02-29
知道答主
回答量:1
采纳率:0%
帮助的人:633
展开全部
在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语言中并不允许。在一个函数中定义相同函数便为递归定义,照样是不正确的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuxiaole_abc
2012-08-20 · TA获得超过423个赞
知道答主
回答量:75
采纳率:0%
帮助的人:80.3万
展开全部
因为中国那帮老头子迂腐!!

99年后的C语言就支持了,尽信书不如无书,用Dev C++或者Codeblocks测试一样就会发现,C语言完全支持函数嵌套定义,这是C99国际标准里的新规定,C99的一个新特性。实践是检验真理的唯一方法,既然写了代码,为什么不编译一下呢?或者在古老的VC6.0里编译不了,那,试试最新的VC呢?最新版的VC试一试?就是看不惯一些人人云亦云,把真理埋没了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
景问丝07
推荐于2017-11-21 · TA获得超过104个赞
知道答主
回答量:51
采纳率:0%
帮助的人:35万
展开全部
不可以嵌套定义的,只能递归调用
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式