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

admin2022-04-02  23

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

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

答案D

解析 题意中,函数fun的第二个参数通过指针作为函数返回值,它的功能是通过递归,求得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/Ohkp777K
0

最新回复(0)