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

求大佬指点!

当if后面没有return age时,输出的年龄为8岁,加上后年龄为18,求解释

#include <stdio.h> 

int people(n)

{   int age;

    if(n==1){age=10;return age;}

    else

    {age=people(n-1)+2;

     return age;  

    }

}

int main() 

{

    int fifthage=people(5);

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

return 0;

}


正在回答

2 回答

我并不是很专业,但你这个问题我觉得是这样的:

people(5) --> people(4) --> people(3) --> people(2) --> people(1)

若没有return age即表示到达递归出口时没有返回值age=10;

people(1)=0 --> people(2)=0+2 -->......-->people(5)=0+2+2+2+2=8;

1 回复 有任何疑惑可以回复我~
#1

Gavin谚 提问者

谢谢大神!
2017-11-06 回复 有任何疑惑可以回复我~

递归函数

当n-1=1时是最后一次执行代码应该执行if(n==1){age=10;return age;}的代码

返回age=10;

最后要加上10;

1 回复 有任何疑惑可以回复我~
#1

Gavin谚 提问者

谢谢大神!
2017-11-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

求大佬指点!

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