niusouti.com

对于以下递归函数f,intf(intn){returnf(n-1)+n;},调用f(4),其返回值为()A、10B、11C、0D、以上均不是

题目

对于以下递归函数f,intf(intn){returnf(n-1)+n;},调用f(4),其返回值为()

  • A、10
  • B、11
  • C、0
  • D、以上均不是

相似考题
更多“对于以下递归函数f,intf(intn){returnf(n-1”相关问题
  • 第1题:

    已知递归函数f的定义如下:

    int f(int n){

    if(n<= 1)return 1;//递归结束情况f5=5*f3=5*3*f1

    else return n*f(n-2); //递归

    }

    则函数调用语句f(5)的返回值是______。


    正确答案:15
    15 解析:函数递归调用,f(5)=5*f(3)=5*(3*f(1))=15。

  • 第2题:

    ( 9 )下面的函数利用递归实现了求 1+2+3+ …… +n 的功能:

    int sum ( int n ) {

    if ( n==0 )

    return 0;

    else

    return n+sum ( n-1 ) ;

    }

    在执行 sum ( 10 )的过程中,递归调用 sum 函数的次数是【 9 】 。


    正确答案:

  • 第3题:

    将f=1+1/2+1/3+…+1/n转化成递归函数,其递归体是()。

    A、f(1)=0

    B、f(1)=1

    C、f(0)=1

    D、f(n)=f(n-1)+1/n


    参考答案:D

  • 第4题:

    计算斐波那契数列第n项的函数定义如下: intfib(intn){ if(n==0)returnl; elseif(n==l)return2: elsereturnfib(n-1)+fib(n-2); } 若执行函数调用表达式fib(2),函数fib被调用的次数是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:C
    C。【解析】针对递归调用的含义。当n为2时有fib(o),fib(1),fib(2)被调用,且fib(O),fib(1)时调用结束,即共3次。

  • 第5题:

    有以下程序:includeintf(intn)} if(n==1)return 1;else return f(n-1)+1;}main(){int

    有以下程序: #include <stdio.h> intf(intn) } if(n==1) return 1; else return f(n-1)+1; } main() { int i,j=0; for(i=1; i<3; i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:在main函数中,j的值是f(1)和f(2)的值相加的结果。f(1)=1,f(2)=f(1)+1=2,j的值为1+2=3。

  • 第6题:

    有以下程序,其中函数f的功能是将多个字符串按字典顺序排序:includevoidf(char*p[],in

    有以下程序,其中函数f的功能是将多个字符串按字典顺序排序: #include<string.h> voidf(char*p[],intn) { char*t;int i,j; for(i=0;i<n-1;i++) for (j=i+1;j<n;j++) if(strcmp(p[i],p[j])>0) { t=p[i]; p[i]=p[j]; p[j]=t; } } main() { char*p[5]={"abc"

    A.2

    B.3

    C.6

    D.4


    正确答案:D
    解析: 函数f的功能是将字符串数组中的每个字符串元素按照由小到大的顺序进行排列,调用f(p,5)后,字符串数组p变为{“aabdfg”,“abbd”,“abc”,“cd”,“dcdbe”},所以最后输出p[1]即"abbd"的长度应为4。

  • 第7题:

    已知递归函数f(n)的功能是打印n,n-1,…,1,且n>=1,应采用的代码段是(42)。

    A.if n>1 then f(n-1); printf("% d",n);

    B.if n<1 then f(n+1); printf("% d", n);

    C.printf("% d",n); if n>1 then f(n-1);

    D.printf("% d", n); if n<1 then f(n+1);


    正确答案:C
    解析:n等于1时,递归结束,当n>1时递归打印n-1。

  • 第8题:

    设n的初值为正整数,设计一个递归算法如下:int fact(int n){if(n<=0)return 1;else return(n*fact(n-1));}以下叙述中,正确的是______。

    A.计算fact(n)需要执行n+2次函数调用
    B.计算fact(n)需要执行n+1次函数调用
    C.计算fact(n)需要执行n次函数调用
    D.计算fact(n)需要执行n-1次函数调用

    答案:B
    解析:
    本题考查函数递归调用方面的相关知识。递归法是描述算法的一种强有力的方法,其思想是:将N=n时不能得出解的问题,设法递归(压栈)转化为求n-1,n-2,…的问题,一直到N=0或1的初始情况,由于初始情况的解可以给出,因此,开始层层退栈得到N=2,3,…,n时的解,得到最终结果。本题中,主程序调用fact(n)称为外部调用,其他调用称为内部调用,直到调用fact(0)为止。fact(n)调用fact(n-1),fact(n-1)调用fact(n-2)……fact(1)调用fact(0),内部调用n次,外部调用一次,共n+1次。

  • 第9题:

    递归函数f(n)=f(n-1)+n(n>1)的递归出口是()

    • A、 f(1)=0
    • B、 f(1)=1
    • C、 f(0)=1
    • D、 f(n)=n

    正确答案:B

  • 第10题:

    在C语言中,下列错误的说法是()。

    • A、函数可以递归调用
    • B、不允许在函数中再定义函数
    • C、递归程序不可能用非递归算法实现
    • D、对于continue语句,可以通过改变程序的结构而不使用它

    正确答案:C

  • 第11题:

    判断题
    将f=1+1/2+1/3+…+1/n转化为递归函数时,递归部分为f(n)=f(n-1)+1/n,递归结束条件为f(1)=1。()
    A

    B


    正确答案:
    解析:

  • 第12题:

    单选题
    递归函数f(n)=f(n-1)+n(n>1)的递归出口是()
    A

     f(1)=0

    B

     f(1)=1

    C

     f(0)=1

    D

     f(n)=n


    正确答案: B
    解析: 暂无解析

  • 第13题:

    使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。 (1)funl(intn)求出n的阶乘,必须使用递归调用。 (2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。 注意:不能修改函数的其他部分。 试题程序: include<iostream.h> //必须使用递归 intfunl(intn) { } //不能使用递归 intfun2(intn) { } voidmain { inti; cout<<"请输入一个整数:"<<endl; cin>>i; cout<<"输入数字的阶乘是:"<<funl(i)<<endl; cout<<"输入数字的阶乘是:"<<fun2(i)<<endl; return; }


    正确答案:
    //必须使用递归
    jntfunl(intn)
    {
    if(n<=0)
    return0;
    if(n==1)
    return1;
    returnn*funl(n-1);
    };
    //不能使用递归
    intfun2(intn)
    {
    if(n<=0)
    retturn0;
    intres=1:
    for(inti=1;i<=n;i++)
    {
    res*=i;
    }
    returnres;
    }
    【解析】本题考查的是递归函数和阶乘算法。递归的阶乘算法可以通过判断传入参数,如果大于1,则返回n*funl(n-1),意思是返回n乘以n-1的阶乘;如果等于1,则返回1。这样递归下去就能最终得出n的阶乘。非递归算法可以先建立一个累乘变量,并初始化为1,然后循环遍历1~n,将遍历的数累乘到变量中即可。

  • 第14题:

    若有以下程序#includevoidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf(“%d\n“,n);}则以下叙述中不正确的是()

    A、若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

    B、若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f

    C、对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明

    D、函数f无返回值,所以可用void将其类型定义为无值型


    参考答案:C

  • 第15题:

    有以下程序includestdio.hintf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f(a,4);printf(“%d\n“,s);}intf(intt[],intn){if(n0)returnt[n-1]+f(t,n-1);elsereturn0;}程序运行后的输出结果是()。

    A、4

    B、10

    C、14

    D、6


    参考答案:B

  • 第16题:

    下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!cn*(n-1)*...*2*1)

    unsigned fact(unsigned n)

    {

    if (n<=1)

    return 1;

    return 【 】;

    }


    正确答案:n*fact(n-1)或者fact(n-1)*n或者n*fact(-1+n)或者fact(-1+n)*n
    n*fact(n-1)或者fact(n-1)*n或者n*fact(-1+n)或者fact(-1+n)*n 解析:递归的使用。

  • 第17题:

    若有以下程序includevoidf(intn);main() (voidf(intn); f(5); }void f(intn) {printf(

    若有以下程序 #include <stdio.h> void f(int n); main() ( void f(int n); f(5); } void f(int n) { printf("%d\n",n); } 则以下叙述中不正确的是

    A.若只在主函数中对函数f进行说明,则只能在土函数中正确调用函数f

    B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正碗调用函数f

    C.对于以上程序,编译时系统会提示出错信息:提示对f函数重复况明

    D.函数f无返回值,所以可用void将其类型定义为无值型


    正确答案:C
    解析:本题考核的知识点是函数说明的方法。若一个函数定义在主调函数之后,其返回值不是int或char型,则必须对之进行函数说明。可在函数外说明也可以在函数内说明,在函数外说明,在其后的所有函数均可调用该函数,若在函数内说明,则只能在本函数内调用该函数。函数只能定义一次,但函数说明可以出现多次,因此选项C是错误的。所以,4个选项中C为所选。

  • 第18题:

    已知递归函数f(n)的功能是计算1+2+…+n,且n≥1,应采用的代码段是______。

    A.if n>1 then return 1 else return n+f(n-1)

    B.if n>1 then return 1 else return n+f(n+1)

    C.if n<1 then return 0 else return n+f(n-1)

    D.if n<1 then return 0 else return n+f(n+1)


    正确答案:C
    解析:递归函数的目的是执行一系列调用,一直到达某一点,序列终止。为了保证递归函数正常执行,应该遵守下面的规则:
      (1)每当一个递归函数被调用时,程序首先应该检查其基本的条件是否满足,例如,某个参数的值等于零,如果是这种情形,函数应停止递归。
      (2)每当函数被递归调用时,传递给函数一个或多个参数,应该以某种方式变得“更简单”。即这些参数应该逐渐靠近上述基本条件。例如,一个正整数在每次递归调用时会逐渐变小,以至最终其值能到达零。
      在本题中,f(n)的功能是解决1+2+…+n的累加问题,可用下面的递归公式表示f(n):
                   f(n)=0      (n=0)
                   f(n)=n+f(n-1)  (n1)
      因此可知,f(n)应采用的代码段为:
      if n1
      then return 0
      else return n+f(n-1)。

  • 第19题:

    递归函数f(n)的功能是计算1+2+…+n,且n≥1,则f(n)的代码段是(49)。

    A.if n>1 then return 1 else return n+f(n-1)

    B.if n>1 then return 1 else return n+f(n+1)

    C.if n>1 then return 0 else return n+f(n+1)

    D.if n<1 then return 0 else return n+f(n-1)


    正确答案:D
    解析:根据题意,当n1时结束递归,函数返回0,否则返回n+f(n-1)进行递归运算。

  • 第20题:

    设函数f(χ)=(eχ-1)(e2χ-2)…(enχ-n),其中n为正整数,则f’(O)=( )。

    A、(-1)n-1(n-1)!
    B、(-1)n(n-1)!
    C、(-1)n-1n!
    D、(-1)nn!

    答案:A
    解析:

  • 第21题:

    将f=1+1/2+1/3+.....+1/n转化成速递归函数,其递归出口是()递归体是()。


    正确答案:f(1)=1;f(n)=f(n-1)+1/n

  • 第22题:

    关于递归定义的函数,下列说法正确的是()

    • A、递归定义的函数一定是“递归计算”的
    • B、递归定义的函数一定是“迭代计算”的
    • C、有些递归定义的函数可以“迭代计算”,有些递归定义的函数则必须“递归计算”
    • D、凡是可以“迭代计算”的函数,一定可以“递归计算”,凡是可以“递归计算”的函数,也一定可以“迭代计算”

    正确答案:C

  • 第23题:

    填空题
    将f=1+1/2+1/3+.....+1/n转化成速递归函数,其递归出口是()递归体是()。

    正确答案: f(1)=1,f(n)=f(n-1)+1/n
    解析: 暂无解析