有以下程序: int fun(int x) { int p; if(x=0||x==1) return(3); p=x-fun(x-2); return p; } main() { printf

admin2012-12-03  19

问题 有以下程序:
  int fun(int  x)
  {  int p;
      if(x=0||x==1)  return(3);
      p=x-fun(x-2);
      return p;
  }
  main()
{  printf("%d\n",fun(7));}
    执行后的结果是(    )。

选项 A、7
B、3
C、2
D、0

答案C

解析 调用函数fun(7)时,由于x的值为7,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(5):调用函数fun(5)时,由于x的值为5,执行语句“p=x-fun(x-2);”,相当于执行n=7-fun(3);调用函数fun(3)时,由于x的值为3,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(1):调用函数fun(1)时,由于x的值为1,执行语句“return(3);”,函数的返回值为3。因此函数调用fun(7)等价于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函数fun(7)的返回值为2。答案为C。
转载请注明原文地址:https://kaotiyun.com/show/dwPp777K
0

最新回复(0)