关于下面函数,哪一个是错误描述?n为整数defsum(n):ifnA.功能等价于下面的函数#n为整数defsum2(n):return(1+n)*n/2B.sum(5)是函数调用C.是递归函数D.求任意两个数值n和n-1的和

题目
关于下面函数,哪一个是错误描述?n为整数defsum(n):ifn<=0:return0returnn+sum(n-1)

A.功能等价于下面的函数#n为整数defsum2(n):return(1+n)*n/2

B.sum(5)是函数调用

C.是递归函数

D.求任意两个数值n和n-1的和


相似考题
更多“关于下面函数,哪一个是错误描述?#n为整数defsum(n):ifn<=0:return0returnn+sum(n-1) ”相关问题
  • 第1题:

    假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数()

    A.h(K)=KmodN

    B.h(K)=1

    C.h(K)=K/N

    D.h(K)=(K+rand(N))modN,rand(N)返回一个0到N-1的整数


    正确答案:A

  • 第2题:

    在下面循环语句中循环体执行的次数为( )。

    for(int i=0; i

    if(i>n/2) break;

    A、n/2

    B、n/2+1

    C、n/2-1

    D、n-1


    参考答案B

  • 第3题:

    下面算法是实现对n个整数的序列进行选择排序,其中序列的“长度”n为问题的规模。该算法的时间复杂度为(11)。 void select_sort(int a[],int n){ //将a中整数序列重新排列成从小到大有序的整数序列 for(i=0;i<n-1;++i){ j=i; for(k=i+1;k<n;++k)if(a[k]<a[j])j=k; if(j!=i){w=a[j];a[j];a[i];a[i]=w} )//select_sort

    A.O(n2)

    B.O(n3)

    C.O(n4)

    D.O(n)


    正确答案:A
    解析:算法中的控制结构是两重循环,所以基本操作是在内层循环中的“比较”,它的重复执行次数是:对时间复杂度而言,只需要取最高项,并忽略常数系数。

  • 第4题:

    设有一个递归算法如下 im fact(int n){ if(n<=0)return 1; else return n * fact(n-1); } 下面正确的叙述是(35)。

    A.计算fact(n)需要执行n次函数调用

    B.计算fact(n)需要执行n+1次函数调用

    C.计算fact(n)需要执行n+2次函数调用

    D.计算fact(n)需要执行n-1次函数调用


    正确答案:B
    解析:连同其他函数调用fact和递归调用次数,计算fact(n)需要执行n+1次函数调用。

  • 第5题:

    已知n为一正整数,在下面的循环语句中,循环体的重复次数约为(59)。

    s=0; i=1;

    while (i<n)

    {i=i *2; s=s+i;)

    A.n-1

    B.n/2

    C.(n-1)2

    D.log2n


    正确答案:D
    解析:本题考查程序中的循环结构。
      从题中的代码可知,由变量i的变化控制着循环次数,i的值依次为1,2,4,8,…,直到i的值大于等于n时为止(即2kn,其中k为循环次数)。因此,当klog2n时终止循环。

  • 第6题:

    递归函数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)进行递归运算。

  • 第7题:

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

    unsigned fact (unsigned n)

    {

    if(n<=1)

    retum 1;

    return【 】;

    }


    正确答案:n*fact (n-1)
    n*fact (n-1) 解析:本题考核递归函数。一般递归函数由递归出口和递归体两部分组成。递归出口给出了递归终止的条件;递归体给出了递归的方式。题中程序给出了递归出口,但是没有给出递归体,由阶乘的定义可知其递归体应该为n*fact (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题:

    设函数厂(x)=(ex一1)(e2x一2)…(enx-n),其中n为正整数,则.f'(0)=( )

    A.(一1)n-1(n一1)!
    B.(一1)n(n一1)!
    C.(-1)”1!
    D.(-1)7h 1

    答案:A
    解析:
    根据导数的定义

    因此正确选项是A。

  • 第10题:

    递归函数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

  • 第11题:

    单选题
    下面关于t分布的说法,正确的有()。
    A

    t分布的概率密度函数在整个轴上呈偏态分布

    B

    t分布的概率密度函数在正半轴上呈偏态分布

    C

    自由度为n-1的t分布概率密度函数与标准正态分布N(0,1)的概率密度函数的图形大致类似

    D

    自由度为n-1的t分布概率密度函数与二项分布b(n,p)的概率密度函数的图形大致类似


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

  • 第12题:

    单选题
    设有一个递归算法如下: int fact(int n) {  //n大于等于0               if(n<=0) return 1;               else return n*fact(n-1);        }  则计算fact(n)需要调用该函数的次数为()
    A

     n+1

    B

     n-1

    C

     n

    D

     n+2


    正确答案: A
    解析: 特殊值法。设n=0,易知仅调用一次fact(n)函数,故选A。

  • 第13题:

    T(n)=O(f(n))中,函数O()的正确含义为

    A.T(n)为f(n)的函数

    B.T(n)为n的函数

    C.存在足够大的正整数M,使得T(n)≤M×f(n)

    D.存在足够大的正整数M,使得M×f(n)≤T(n)


    正确答案:C

  • 第14题:

    下面是用来计算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 解析:递归的使用。

  • 第15题:

    阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    【说明】

    有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

    【函数】

    main()

    {

    int number[20],n,m,i;

    printf("the total numbers is:");

    scanf("%d",&n);

    printf("back m:");

    scanf("%d",&m);

    for(i=0;i<=n-1;i)

    scanf("%d,",&number[i]);

    (1);

    for(i=0;i<=n-1;i)

    printf("%d,",number[i]);

    }

    move(array,n,m)

    int n,m,array[20];

    {

    int *p,array_end;

    array_end=(2);

    for(p=array[n-1];(3);p--)

    *p=(4);

    *array=array_end;

    m--;

    if(m>0) (5);

    }


    正确答案:(1)move(numbernm) (2)*(array[n-1]) (3)p>array (4)*(p-1) (5)move(arraynm)
    (1)move(number,n,m) (2)*(array[n-1]) (3)p>array (4)*(p-1) (5)move(array,n,m) 解析:本题考查数字顺序移动和数组的相关知识。
    从数据结构的角度出发,数字在数组中顺序移动,就是将数字一个一个往后搬,例如,将n-1位置的数字移到n位置,然后再把n-2位置的数字移到n-1位置,其实这是一个简单的数字移动。我们只需要取出第n个位置的数字并保存在一个临时变量中,然后,其他的就按顺序依次移动即可,直到一次整体移动完成,我们再从临时变量中取回数字并将其放在数组的第一个位置中。重复这个过程m次,整个数组就往后移动了m个位置。
    首先,我们来看一下主函数,在主函数里面声明了一个容量为20的整型数组 number[20]和其余3个整型变量,数组用来存储我们输入的待处理的数,而变量m、n分别用于存放我们要移动位置的个数和输入整数的个数。第一个循环语句用于n个整数的输入,第二个循环语句用于n个整数的输出,在这中间应该还有一个处理来完成将n个整数顺序向后移m个位置,并让最后m个数变成最前面的m个数这个功能,从下面的程序段我们知道,这里是调用函数muve(number,n,m)来完成的。因此,第(1)空填 move(nurnber,n,m),在调用时我们需要注意参数的传递。
    再来看move(array,n,m)函数,在此函数中,同样声明了一个容量为20的整型数组和 2个整型变量,另外还声明了一个指针变量p。由*array=array_end,结合第(2)空来看,这里是把数组中最后位置的数取出存放在array_end变量当中。因此,第(2)空应填 *(array[n-1])。
    第(3)空是常见的在循环语句中表示判断的语句,由于“p=array[n-1]”把数组最末的地址赋给了指针p,只要p的值大于数组的起始地址循环就可以继续,因此,第(3)空应填p>array。
    第(4)空要完成的任务是将数字后移,因此,第(4)空为*p-1。从程序来分析,数组每移动完成一次,m的值就减一,而现在只有移动m次的功能没有实现,因此,只要m值大于0,就调用函数自身来实现再次移动。因此,第(5)空填写move(array,n,m)进行递归调用。

  • 第16题:

    某机器字长为n,最高是符号位,其定点整数的最大值为(2)。

    A.2^n - 1

    B.2^(n-1) -1

    C.2^n

    D.2^(n-1)


    正确答案:B

  • 第17题:

    已知递归函数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)。

  • 第18题:

    关于下面函数,哪一个是错误描述?n为整数deffactorial(n):ifn<=0:returnifn==1:return1returnn*factorial(n-1)

    A.求整数n的阶乘

    B.factorial(5)是函数调用

    C.是递归函数

    D.求任意两个数值n和n-1的乘积


    正确答案:D

  • 第19题:

    下面是一个对整数数组A中的前n个元素求最小值的C程序,函数返回最小元素的位置。 Int minValue(int A[],int n){ int k=0: for(int j=1;j<=n-1;j++) if(A[j]<a[k])k=j; return k: 当n=4时,程序中可能的执行路径数为______。

    A.2

    B.4

    C.8

    D.16


    正确答案:B
    解析:当N=4时,程序中的循环一共执行三次,这样就有三个判定结点,所以需要四个基本的测试用例。

  • 第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题:

    某机器字长为 n,最高位是符号位,其定点整数的最大值为( )。

    A. 2^(n -1 )
    B. 2^(n-1)-1
    C. 2^n
    D. 2^n-1

    答案:B
    解析:

  • 第22题:

    设有一个递归算法如下: int fact(int n) {  //n大于等于0               if(n<=0) return 1;               else return n*fact(n-1);        }  则计算fact(n)需要调用该函数的次数为()

    • A、 n+1
    • B、 n-1
    • C、 n
    • D、 n+2

    正确答案:A

  • 第23题:

    单选题
    递归函数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
    解析: 暂无解析