itgle.com

下面是一个递归Java程序,其功能为 ( ) long Factorial(int n){ if(1==n){ return 1; } else return n * Factorial (n-1); }A.求1-n的和B.求2到n的和C.求n的阶乘D.求2-n的积

题目

下面是一个递归Java程序,其功能为 ( ) long Factorial(int n){ if(1==n){ return 1; } else return n * Factorial (n-1); }

A.求1-n的和

B.求2到n的和

C.求n的阶乘

D.求2-n的积


相似考题
更多“下面是一个递归Java程序,其功能为 ( ) long Factorial(int n){ if(1==n){ return 1; } else return n * Factorial (n-1); }A.求1-n的和B.求2到n的和C.求n的阶乘D.求2-n的积”相关问题
  • 第1题:

    如有下程序:includeusing namespace std;long fun(int n){if(n>2)return(fun(n-1)+fu

    如有下程序: #include<iostream> using namespace std; long fun(int n) { if(n>2) return(fun(n-1)+fun(n-2)); else return 2; } int main() { cout<<fun(3)<<endl; return 0; } 则该程序的输出结果应该是( )。

    A.2

    B.3

    C.

    D.5


    正确答案:C
    解析: 主函数中调用fun(3),在fun内部当n>2时,递归调用fun(n-1)+fun(n-2),否则返回2。所以当n=3时,调用fun(2)+fun(1),即返回2+2,等于4,

  • 第2题:

    有如下程序:includeusing namespace std;long fun(int n){if(n>2)return(fun(n-1)+fu

    有如下程序: #include<iostream> using namespace std; long fun(int n) { if(n>2) return(fun(n-1)+fun (n-2)); else return 2; } int main() { cout<<fun(3)<<end1; return 0; } 则该程序的输出结果应该是 ( )。

    A.2

    B.3

    C.4

    D.5


    正确答案:C
    解析:主函数中调用fun(3),在fun内部当n>2时,递归调用 fun(n-1)+fun(n-2),否则返回2。所以当n=3时,调用fun(2)+fun(1),即返回2+2,等于4。

  • 第3题:

    阅读下列利用递归来求 n! 的程序

    Class FactorialTest{

    Static long Factorial (int n) { // 定义 Factorial () 方法

    If (n==1)

    Return 1;

    Else

    Return n* Factorial(_____);

    }

    Public static void main (String a[]) { // main () 方法

    Int n=8;

    System.out.println{n+ ” ! = ” +Factorial (n)};

    }

    }

    为保证程序正确运行,在下划线处应该填入的参数是

    A ) n-1

    B ) n-2

    C ) n

    D ) n+1


    正确答案:A

  • 第4题:

    阅读下面利用递归来求n!的程序 class FactorialTest { static long Factorial(int n){ //定义Factorial()方法 if(n==1)return 1; else return n * Factorial(______); } public static void main(String a[]) { //main()方法 int n=8; System.out.println(n+"!="+Factorial(n)); } } 为保证程序正确运行,在下画线处应该填入的参数是

    A.n-1

    B.n-2

    C.n

    D.n+1


    正确答案:A

  • 第5题:

    有如下程序:includelong fib(int n){if(n>2)return(fib(n-1)+fib(n-2)); else return(

    有如下程序: #include <stdio.h> long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main() { printf("%d\n",fib(3));} 该程序的输出结果是( )。

    A.2

    B.4

    C.6

    D.8


    正确答案:B
    解析:本题考查函数的递归调用。fib(3)=fib(2)+fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故输出的fib(3)的值为4。

  • 第6题:

    下面的程序中定义了两个方法求自然数1~100的和。具体如下:int suml(int n);利用循环求1~n的和,int sum2(int n);利用递归方法求和1~n的和;在main()方法中调用这两个方法求1~100的和并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。

    public class Sum{

    public static void main(String args[])

    {

    //1.调用suml(int n),求1~100的和

    System.out.println("1~100的和:"+sum1(100));

    //2,调用sum2(int n),求1~100的和

    System.out.println("1~100的和:"+sum2(100));

    }

    static int suml(int n)

    {

    int result=0;

    for(int i=1;i<=n;i++)

    ________________

    retrun result;

    }

    static int sum2(int n)

    {

    if(______________)

    return 1;

    else

    _____________

    }

    }


    正确答案:result+=i; n==1 return n+sum2(n-1);
    result+=i; n==1 return n+sum2(n-1); 解析:本题主要考查递归调用的算法及for循环语句的使用。解答本题的关键是热练掌握递归调用的算法及for循环语句的使用.在本题中,result+=i;语句的功能是累加求和,if(n==1)语句的功能是判断当n==1时,累加和为1,return n+sum2(n-1);语句的功能是递归调用sum2(int n)方法求和。

  • 第7题:

    能保证对所有的参数能够结束的递归函数是

    A.int f(int n){if(n<1)return 1;else return n*f(n+1);}

    B.int f(int n){if(n>1)return 1;else return n*f(n-1);}

    C.int f(int n){if(abs(n)<1)return 1;else return n*f(n/2);}

    D.int f(int n){if(n>1)return 1;else return n*f(n*2);)


    正确答案:C
    解析:递归函数的两个重要条件是要有结束和递归表达式。选项A、B、D无法结束。根据这两个条件可以进行判断出答案为C。

  • 第8题:

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

  • 第9题:

    下面 ______ 是正确的递归函数,它保证对所有的参数能够结束。

    A.int f(int n){ if(n<1) return 1; else return n*f(n+1); }

    B.int f(int n){ if(n>1) return 1; else return n*f(n-1); }

    C.int f(int n){ if(abs(n)<1) return 1; else return n*f(n/2); }

    D.int f(int n){ if(n>1) return 1; else return n*f(n*2); }


    正确答案:C

  • 第10题:

    阅读下列利用递归来求n!的程序 class Factorial Test{ staticlong Factorial(intn){//定义Factorial()方法 if(n==1) retum 1; else returnn*Factorial{{_____}; } publicstaticvoidmain{Stringa[)){//main()方法 intn=8; System.out.println{n+"!="+Factorial(n)}; } } 为保证程序正确运行,在下划线处应该填入的参数是( )。

    A.n-1

    B.n-2

    C.n

    D.n+1


    正确答案:A
    解析:因为在n不为1时,n!=n*(n-1)*(n-2)*…*1=n*(n-1)!,所以此处应为n-1。

  • 第11题:

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

    A.求整数n的阶乘

    B.factorial(5)是函数调用

    C.是递归函数

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


    正确答案:D

  • 第12题:

    汉诺塔问题可以用递归解决,以下也可用递归实现的是()

    • A、求1-n的和
    • B、求n的阶乘
    • C、斐波那契数列
    • D、n^k(^表示幂)

    正确答案:A,B,C,D

  • 第13题:

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

    int sum ( int n ) {

    if ( n==0 )

    return 0;

    else

    return n+sum ( n-1 ) ;

    }

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


    正确答案:

  • 第14题:

    阅读下面程序: include using namespace std; long fib(int n) {if(n > 2) return(fib

    阅读下面程序:

    include<iostream>

    using namespace std;

    long fib(int n)

    {

    if ( n > 2 )

    return (fib(n-1)+fib(n-2));

    else

    return 2;

    }

    int main()

    {

    cout<<fib(3)<<end1;

    return 0;

    {

    则该程序的输出结果应该是【 】。


    正确答案:4
    4 解析:本题主要考察C++中递归函数的调用。递归函数即自调用函数,在函数体内部直接或间接的自己调用自己,即函数的嵌套调用是函数本身。递归调用分为直接递归调用和间接递归调用两种形式。
    本题程序为求解典型递归数列Fibonacci中任意项值的简化程序(主函数中的调用改成 fib(n),即变成求解任意项值)。主函数通过调用fib()函数,fib()函数内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用。
    主函数通过实参将值3赋给fib()函数的形参n,由于n‘3满足汀分支语句条件,因此函数进行递归调用,即计算fib(2)和fib(1)的值;将2赋给fib()函数的形参后,
    由于n=2不满足if分支语句条件,因此程序退出递归,返回2:将1赋给fib()函数的形参后,函数同样返回2。因此函数递归调用的最终结果为返回2+2=4,即fib(3) =4,程序最后输出值为4。

  • 第15题:

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

  • 第16题:

    有如下程序:includelong fib(int n){if(n>2)return(fib(n-1)+fib(n-2)); else retu

    有如下程序: #include<iostream.h> long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2);} void main( ) {cout<<fib(3);} 该程序的输出结果是

    A.2

    B.4

    C.6

    D.8


    正确答案:B
    解析:fib(3)=fib(2)+fib(1),而fib(2)的返回值为2,fib(1)的返回值也为2,故输出的fib (3)的值为4。

  • 第17题:

    下面是一个递归Java程序,其功能为 ( )long Factorial(int n){ if(1==n){ return 1; } else return n*Factorial(n-1);}

    A.求1-n的和

    B.求2到n的和

    C.求n的阶乘

    D.求2-n的积


    正确答案:C
    解析:该题考查的是递归调用。在Java中允许方法的递归调用,即允许方法调用自身。当算阶乘的时候最多的是用到递归调用,本题的功能是求n的阶乘。

  • 第18题:

    计算N!的递归算法如下,求解该算法的时间复杂度时,只考虑相乘操作,则算法的计算时间T(n)的递推关系式为(55);对应时间复杂度为(56)。

    int Factorial (int n)

    {//计算n!

    if(n<=1)return 1;

    else return n * Factorial(n-1);

    }

    (62)

    A.T(n)=T(n-1)+1

    B.T(n)=T(n-1)

    C.T(n)=2T(n-1)+1

    D.T(n)=2T(n-1)-1


    正确答案:A

  • 第19题:

    阅读下列利用递归来求n!的程序。 class FactorialTest{ static long Factorial(int n){//定义Factorial方法 if(n= =1) return l; else return n*Factorial{ }; } public static void main{String a[]}{ //main方法 int n=8: System.out.println{n+"!="+Factorial (n)}; } } 为保证程序正确运行,在下画线处应该填入的参数是( )。

    A.n-1

    B.n-2

    C.n

    D.n+1


    正确答案:A
    A。【解析】因为在n不为l时,n!=n*(n-1)*(n-2)*…*1=n*(n-1)!,所以此处应为n-1。

  • 第20题:

    设有一个递归算法如下: int 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(n)称为外部调用,其他调用为内部调用,直到调用fact(0)为止,fact(n)调用fact(n-1),fact(n-1)调用fact(n-2),…,fact(1)调用fact(0),内部调用n次,外部调用1次,总共n+1次。

  • 第21题:

    下列函数中,哪项是正确的递归函数( )。

    A int Fun(int n)

    {

    if(n<1) return 1;

    else return n*Fun(n+1);

    }

    B) int Fun(ira n)

    {

    if(abs(n)<1) return 1;

    else return n*Fun(n/2);

    }

    C) int Fun(int n)

    {

    if(n>1) return 1;

    else return n*Fun(n*2)1

    }

    D) int Fun(int n)

    {

    if(n>1) return 1;

    else retun n*Fun(n-1);

    }

    A.A

    B.B

    C.C

    D.D


    正确答案:B
    解析:本题考查递归函数这个知识点。递归函数由递归出口和递归体两部分组成:递归出口给出了递归终止的条件;递归体给出了递归的方式。对于选项A,当参数n>=1时,不满足递归调用的结束条件;对于选项C,当参数n=0时,不满足递归调用的结束条件;对于选项D,当参数n:2时,不满足递归调用的结束条件。

  • 第22题:

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

  • 第23题:

    关于下面函数,哪一个是错误描述?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的和


    正确答案:D

  • 第24题:

    多选题
    汉诺塔问题可以用递归解决,以下也可用递归实现的是()
    A

    求1-n的和

    B

    求n的阶乘

    C

    斐波那契数列

    D

    n^k(^表示幂)


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