问题 单项选择题

若有如下程序:
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。

单项选择题
多项选择题