当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;
}
我并不是很专业,但你这个问题我觉得是这样的:
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;
递归函数
当n-1=1时是最后一次执行代码应该执行if(n==1){age=10;return age;}的代码
返回age=10;
最后要加上10;