为了账号安全,请及时绑定邮箱和手机立即绑定

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

}


正在回答

2 回答

编译后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;
}
0 回复 有任何疑惑可以回复我~
#1

qq_記憶中黑白地帶_04208247 提问者

好的,谢谢
2016-11-25 回复 有任何疑惑可以回复我~
#2

慕后端3326841

我前面回答是不对的,请忽略掉。 运行到getAge(1)时,由于程序没有return值,要么编译器无法通过,给出警告;要么编译器能通过,并返回一个不确定值(如你题里面返回的1)。
2016-12-01 回复 有任何疑惑可以回复我~

int getAge(int n)

{

   int age;

   if(n==1)

   {

   age=10;

return age;//这里要返回age的值给它

   }


0 回复 有任何疑惑可以回复我~
#1

qq_記憶中黑白地帶_04208247 提问者

那你知道9是怎么算来的吗?还是只是系统给的?
2016-11-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问为什么把return age放进中括号里结果是9呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信