有以下程序 int fun(int n) main() {if(n==1)return1; {int x; Else scanf("%d",&x);x=fun(x); retum(n+fun(n-1)); printf("%d\n",x); }

admin2016-12-18  38

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

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

答案D

解析 在C语言中函数可以递归调用,即直接或间接地自己调用自己。本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为:
fun(10)=10+fun(9)=109+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+1=55。
转载请注明原文地址:https://kaotiyun.com/show/0NDp777K
0

随机试题
最新回复(0)