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

求大佬指点!

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

}


提问者:Gavin谚 2017-11-01 20:23

个回答

  • 慕沐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;

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

    递归函数

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

    返回age=10;

    最后要加上10;