求大佬指点!

来源:5-9 递归函数练习

Gavin谚

2017-11-01 20:23

当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回答

  • 慕沐0082909
    2017-11-04 11:26:02
    已采纳

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

    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;

    Gavin谚

    谢谢大神!

    2017-11-06 12:09:37

    共 1 条回复 >

  • 吾爱酌酒杯
    2017-11-04 11:27:08

    递归函数

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

    返回age=10;

    最后要加上10;

    Gavin谚

    谢谢大神!

    2017-11-06 12:10:23

    共 1 条回复 >

C语言入门

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

926209 学习 · 20797 问题

查看课程

相似问题