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

输出是九岁看了半天没找出来哪错

int cc(n)

{

    int age;

    if(n==1)

    {

        age=10;

    }

    else

    {

        age=cc(n-1)+2;

        return age;       

    }

}

int main() 

{

    int age5=cc(5);

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

return 0;

}


提问者:JIAYII 2015-09-24 10:38

个回答

  • qq_圓圓_0
    2015-10-10 16:05:08

    当你加了括号后,括号内的return age 只属于else语句中,这样if语句中就没有return,即n=1时无返还值,即函数cc(1)不知道等于多少。。。。。没有括号时,只有age=getage(n-1)+2属于else语句,return age处于if-else语句之外,执行完if(n=1)或者else语句之后,都会执行return语句,当n=1时,age=10,执行return age,即返还值是10,即cc(1)=10.。。。。。。。

  • qq_追梦_26
    2015-09-24 14:30:39

    哥们,你第一个程序使用递归有点问题,当n==1的时候cc(1)没返回值,系统默认给其赋值为1,所以你的结果就是1+2+2+2+2 = 9的状态

    如果说单纯些递归函数的话第二种肯定好一些,最起码他不会造成函数没有出口

  • JIAYII
    2015-09-24 10:55:50

    大家帮我看下问题是if和else那里不应该有括号,为什么


  • JIAYII
    2015-09-24 10:55:06

    #include<stdio.h>

    int getage(n)

    {

        int age;

        if(n==1)

            age=10;

        else

            age=getage(n-1)+2;

            return age;

    }

    int main()

    {

        int age5=getage(5);

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

    return 0;

    }