若有如下程序: int sub(int m) { if(m==1||m==0) return 2; else return(sub(m-1)*sub(m-2));} main() { int n; scanf(

admin2010-01-10  52

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

答案8

解析 本题的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。
转载请注明原文地址:https://kaotiyun.com/show/OmWp777K
0

最新回复(0)