有下列程序: #include<stdio.h> int f(int x) { if(x<2) return 1; return x*f(x﹣1)+(x﹣1)*f(x﹣2);

admin2022-10-25  31

问题 有下列程序:
     #include<stdio.h>
     int f(int x)
     {
       if(x<2)
         return 1;
       return x*f(x﹣1)+(x﹣1)*f(x﹣2);
     }
     main()
     {
       int y;
       y=f(4);
       printf(”%d\n”,y);
     }
     程序执行后的输出结果是(          )。

选项 A、11
B、43
C、57
D、53

答案 D

解析 函数f是一个递归函数。当x>=2时,递归调用自身,返回值为x*f(x-1)+(x-1)*f(x-2);当x<2时,返回值为1。main函数中,调用函数f传入4,所以y的值是f(4)。f(4)等价于4*f(3)+3*f(2);f(3)等价于3*f(2)+2*f(1);f(2)等价于2*f(1)+1*f(0);f(0)、f(1)等价于1。综上:f(2)等于3,f(3)等于11,f(4)等于53。本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/5Ckp777K
0

随机试题
最新回复(0)