有以下程序 #include <stdio.h> void f(int x[], int n) { if ( n> 1) { f(&x[1], n-1); printf("%d,", x[0]); } else

admin2020-11-27  23

问题 有以下程序
#include <stdio.h>
void f(int x[], int n)
{  if ( n> 1)
   {   f(&x[1], n-1);
       printf("%d,", x[0]);
   }
   else
     printf("%d,", x[0]);
}
main()
{   int  z[6] = {1,2,3,4,5,6};
    f(z,6);     printf("\n");
}
程序的运行结果是

选项 A、6,5,4,3,2,1,
B、1,1
C、1,1,1,1,1,1,
D、1,2,3,4,5,6,

答案A

解析 在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用。本题目中递归函数调用执行过程为:f(z,6) ->f(&z[1],5) ->f(&z[2],4) ->f(&z[3],3) ->f(&z[4],2) ->f(&z[5],1),输出x[0],也即z[5]=6,返回执行f(&z[4],2)之后的输出x[0]语句,即5,同理再返回上一个f函数,依次输出4,3,2,1,A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/c73p777K
0

最新回复(0)