请问为什么把return age放进中括号里结果是9呢?
int getAge(n)
{
int age;
if(n==1)
{
age=10;
}
else
{
age=getAge(n-1)+2;
return age;
}
}
int main()
{
printf("第5个人的年龄是%d岁", getAge(5));
return 0;
}
int getAge(n)
{
int age;
if(n==1)
{
age=10;
}
else
{
age=getAge(n-1)+2;
return age;
}
}
int main()
{
printf("第5个人的年龄是%d岁", getAge(5));
return 0;
}
2016-11-13
编译后getAge(1)输出为1岁[电脑gcc编译显示的结果,慕课的网页编译显示为4195679岁,应该不对);对
if(n==1)
{
age=10;
}
n==1时,if()为真,将10赋值给age。这时getAge(1)取if()为真的值即1,而age=10对本次输出不起作用。
getAge(5)=getAge(1)+8;因而getAge(5)输出9。
可改为:
int getAge(int n)
{
int age;
if(n==1)
{
return 10;
}
else
{
age=getAge(n-1)+2;
return age;
}
}
或
int getAge(int n)
{
int age;
if(n==1)
{
age=10;
}
else
{
age=getAge(n-1)+2;
}
return age;
}
举报