请问为什么把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; }
举报