有下列程序: int fun(int n) { if(n==1)}return 1; else return(n+fun(n-1)); } main() { int x; scanf("%d",&x);x=fun(x);prin

admin2012-12-03  25

问题 有下列程序:
int fun(int n)
{  if(n==1)}return 1;
    else
    return(n+fun(n-1));
}
main()
{  int x;
    scanf("%d",&x);x=fun(x);printf("%d\n",x);
}
执行程序时.给变量x输入10,程序的输出结果是(    )。

选项 A、55
B、54
C、65
D、45

答案A

解析 本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为
    fun(10)=10+fun(9)=10+9+fun(8)=10+9+8+fun(7)
    =10+9++8+7+fun(6)=10+9++8+7+6+fun(6)
    =10十9+8+7+6+5+fun(4)
    =10+9++8+7+6+5+4+fun(3)
    =10+9++8+7+6+5+4+3+fun(2)
    =10+9++8+7+6+5+4+3+2+fun(1)
    =10+9++8+7+6+5+4+3+2=55
转载请注明原文地址:https://kaotiyun.com/show/40Pp777K
0

最新回复(0)