有以下程序: #include<stdio.h> void fun(int n,int *s) { int f1,t2; if(n==1 || n==2)*s=1; else

admin2022-10-25  25

问题 有以下程序:
     #include<stdio.h>
     void fun(int n,int *s)
     {
       int f1,t2;
       if(n==1 || n==2)*s=1;
       else
       {
         fun(n-1,&f1);
         fun(n-2,&t2);
         *s=f1+f2;
       }
     }
     main()
     {
       int x;
       fun(6,&x);
       printf(”%d\n”,x);
     }
     程序运行后的输出结果是(          )。

选项 A、5
B、2
C、3
D、8

答案 D

解析 题干中,函数fun的第2个参数通过指针作为函数返回值,它的功能是通过递归,求得fun(n)的值为fun(n﹣1)+fun(n﹣2)。由于当n取值为1和2时,值为1。所以可知整个数列如下:1,1,2,3,5,8,…,即某一项是前两项之和。所以当n取值为6时,fun(6,*s)返回s的值为3+5=8。本题答案为D选项。
转载请注明原文地址:https://kaotiyun.com/show/ORkp777K
0

最新回复(0)