有下列程序  #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

admin2022-04-02  24

问题 有下列程序
 #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/Lhkp777K
0

最新回复(0)