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

else这里为什么不能加{} ?

#include <stdio.h>

int getAge(numPeople)
{
    int age;
    if(numPeople==1)
        age=10;
    else
    {
        age = getAge(numPeople-1)+2;
    return age;
    }
}
int main()
{
    int fifthAge = getAge(5);
 printf("第5个人的年龄是%d岁", fifthAge);
 return 0;
}

提问者:qq_乱碼_dpVX12 2018-10-28 17:09

个回答

  • 遗失的美好灬
    2018-10-29 11:00:24
    已采纳

    你搞错了,能加的,你的语法错误是numPeople没有声明类型,else语法是对的,顺便说一句,你的递归函数逻辑有问题,答案是错的,自己想想看怎么改进https://img3.mukewang.com/5bd6778300018f5d09000586.jpg

  • 慕粉0247298809
    2018-11-02 16:46:08

    if这里加个{}和返回值;

    如果不加{}这个判断条件有效无效都会执行age=10;,因为int 函数要有返回值,这里执行到age=10;就会卡住

    https://img.mukewang.com/5bdc0dcc0001578c03300485.jpghttps://img2.mukewang.com/5bdc0dcc0001082803490399.jpg


  • 遗失的美好灬
    2018-10-29 11:04:20

    哦,你可能试问为什么else可以不加{}是吧,因为if语法可以这么写,这样写默认认为你{}只包含一行,即我图中红线划的区域,第二行编译器会认为已经结束了,就不会再读了,最好不要这么写,这样的代码会被人骂的https://img.mukewang.com/5bd678b100010ff605730442.jpg

  • 慕婉清9847686
    2018-10-28 20:51:34

    因为你这里的return age也包括if中的age,如果你加{},当numPeople==1时没有返回值