问答详情
源自:5-9 递归函数练习

为什么这里的if..else不能用大括号

#include <stdio.h> 

int rr( n)

{

    int age;

if(n==1)

{

    age=10;

}

else

{

    age=rr(n-1)+2;

    return age;

}

}

int main() 

{

    int ss=rr(5);

printf("第5个人的年龄是%d岁", ss);

return 0;

}

我把if后面加个大括号,然后结束后再在else后面加个大括号,为什么这样运行出来是错误的,把大括号删了后是正确的,为啥这里的if..else不能用大括号。。大佬求助

提问者:weixin_慕尼黑8587307 2021-12-13 23:50

个回答

  • 慕圣4515057
    2022-10-18 11:08:15

    如果return age在大括号里的话他会在每次的else中都被return回去了,也就是每次都被回归(意思是这个意思,具体怎么说我也不清楚,意会即可)一直到第一个人的时候就成了10-2,最终输出8是吧?

    我一开始也是这样的,看了一楼的回答才恍然大悟。

  • qq_慕仔5061244
    2022-10-13 08:49:32

    return age;

    这句要放在if{}else{}的外边

    如:

    if(n==1)

    {

        age=10;

    }

    else

    {

        age=rr(n-1)+2;

    }

    return age;

  • 黒井深
    2022-01-03 11:39:46

    你把你想得代码打一遍不是更直观吗

    你说的不会是

    if(){


    else{

      

    }


    }

    这样吧?

    貌似if语句没有这样使用的。。。你记错了吧

    你是不是跟下面这种搞混了


    http://img.mukewang.com/61d26fd70001947905370349.jpg