问题
单项选择题
若有如下程序:
int sub(int m)
if(m==1||m==0) return 2;
else return(sub(m-1)*sub(m-2));
main()
int n;
scanf("%d",&n);
printf("%d",sub(n));
如果从键盘输入4<回车>,则程序运行后的输出结果是( )。
A.8
B.16
C.24
D.32
答案
参考答案:D
解析: 本题的sub()函数是一个递归函数,当参数m为1或0时返回2,否则返回sub(m-1)*sub(m-2)。所以sub(4)递推下来就是sub(4)=sub(3)*sub(2)=sub(2)*sub(1)*sub(1)*sub(0)=sub(1)*sub(0)*2*2*2=25(上标)=32。所以正确答案是D。