以下程序的输出结果是______。 #include<stdio.h> main() fint x=0; sub(&x,16,2); printf("%d\n",x); } sub(int*a,int n,int k) {if(k<=n) sub(a,n/2,2*k); *a+=k; }
参考答案:N
解析: 本题考查递归函数的调用。在主函数中调用sub(&x,16,2)函数,此时n=16,k=2,if语句的控制的条件k<=n成立,所以执行下面的语句,调用sub(x,8,4),此时n=8,k=4,if语句的控制条件k<=n成立,所以执行下面的语句,调用sub(x,4,8),此时n=4,k=8,if语句控制的条件k<=n不成立,因此,最后得x=2+4+8=14。