有下列程序: #include<stdi0.h> intfun(inta.intb) {if(b==0)relurna; elsereturn(fun(--a,--b)); } voidmain( ) {printf("%d\n",fun(4,2));} 程序的运行结果是( )。A.1B.2C.3D.4

题目

有下列程序: #include<stdi0.h> intfun(inta.intb) {if(b==0)relurna; elsereturn(fun(--a,--b)); } voidmain( ) {printf("%d\n",fun(4,2));} 程序的运行结果是( )。

A.1

B.2

C.3

D.4


相似考题
参考答案和解析
正确答案:B
B。【解析】本题考查递归函数的使用。fun(4,2)->fun(2,o),由于b等于0,故返回值为2。反之,fun(4,2)=2。
更多“有下列程序: #include&lt;stdi0.h&gt; intfun(inta.intb) {if(b==0)relurna; elsereturn(fun(- ”相关问题
  • 第1题:

    有以下程序 include int fun(int a, int b) { if(b==0) return a;

    有以下程序 #include <stdio.h> int fun(int a, int b) { if(b==0) return a; else return(fun(-a,-b)); } main() { printf("%d\n",fun(4,2)); } 程序的运行结果是______。

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:在调用一个函数的过程中又出现直接或间接调用该函数本身,称为函数的递归调用。本题考查的是函数递归调用。首先当a=4,b=2时,调用fun(4,2),不满足条件b==0,继续调用fun函数;此时a=3,b=1,即调用fun(3,1),不满足条件b=0,继续调用fun函数;此时a=2,b=0,满足条件b=0,返回a的值2。

  • 第2题:

    有以下程序includeintfun(int a,intB){if(b=0)return a;elsereturn(fun(--a,--B));}ma

    有以下程序 #include<stdio.h> intfun(int a,intB){if(b=0)return a; else return(fun(--a,--B)); } main() {pdntf("%d\n",fun(4,2));} 程序的运行结果是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:B

  • 第3题:

    有下列程序:

    int fun(int n)

    { if(n==1) return 1;

    else return(n+fun(n-1)); }

    main

    { int x;

    scanf("%d",&x);

    x=fun(x);

    printf("%d\n",x);}

    执行程序时,给变量x输入10,程序的输出结果是( )。

    A.55

    B.54

    C.65

    D.45


    正确答案:A
    第一次进入:x==10,因为x!=1,执行elsereturn(n+fun(n-1));语句,返回10+fun(10-1)即10+fun(9)第二次进入:x==9,因为x!=1,执行elsereturn(n+fun(n-1));语句,返回10+9+fun(9-1)即10+9+fun(8).........第九次进入:x==2,因为x!=1,执行elsereturn(n+fun(n-1));语句,返回10+9+8+7+6+5+4+3+2+fun(2-1)即10+9+8+7+6+5+4+3+2+fun(1)第十次进入:x==1,因为x==1,执行return1;语句,返回10+9+8+7+6+5+4+3+2+1。事实上是求1+...+10的和。结果应该是55.

  • 第4题:

    有下列程序: int fun(int n) { if(n==1)}return 1; else return(n+fun(n-1)); } main { int x; scanf("%d",&x);x=fun(x);printf("%d\n",x); ) 执行程序时,给变量x输入10,程序的输出结果是( )。

    A.55

    B.54

    C.65

    D.45


    正确答案:A
    本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量x时,递归调用的过程为fun(10)=10…fun(9)=104-94-fun(8)=104-9+84-fun(7)=10+9++8++7++fun(6)=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)=10+9++8+7+6+5+4+3+2=55

  • 第5题:

    有下列程序: int fun(int n) {if(n= =1))return l; else return(n+fun(n-1)): } main( ) { int x; seanf("%d",&x);x=fun(x);printf("%d\n",x); } 执行程序时,给变量x输入l0,程序的输出结果是( )。

    A.55

    B.54

    C.65

    D.45


    正确答案:A
    本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量X时,递归调用的过程为fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)=10+9++8+7+6+5+4+3+2=55