A-A+

有以下程序 intfun(intn) {ifln=1)return1; else retum

2022-08-12 18:52:15 问答库 阅读 197 次

问题详情

有以下程序 intfun(intn) {ifln=1)return1; else retum(n+fun(n-1)); } main() {intx; scanf(%d,&x);x=fun(x);printf(%dn,x); } 执行程序时,给变量x输入10,程序的输出结果是
A.54
B.65
C.45
D.55

请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:D
在C语言中函数可以递归调用,即直接或间接地自己调用自己。本题在函数intfun(intn)的定义中又出现了对函数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+1=55

考点:程序