为了账号安全,请及时绑定邮箱和手机立即绑定

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

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;

}


正在回答

4 回答

当你加了括号后,括号内的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.。。。。。。。

2 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~

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


0 回复 有任何疑惑可以回复我~

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

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信