itgle.com

设有一个递归算法如下: 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次函数调用

题目

设有一个递归算法如下: 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次。
更多“设有一个递归算法如下: int fact(int n){ if(n<=0)return 1; else return n*fact(n-1); ”相关问题
  • 第1题:

    12、下面函数是求阶乘的递归函数,请将程序补充完整。 long Fact(int n) { if (n < 0) return 0; if (n==1 || n==0) __________________; else ____________________; }

    A.第4行: return 1 第5行: return n*Fact(n-1)

    B.第4行: return 0 第5行: return n*Fact(n-1)

    C.第4行: return -1 第5行: return (n-1)*Fact(n)

    D.第4行: return 1 第5行: return Fact(n-1)


    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 解析:递归的使用。

  • 第2题:

    求整数n(n>=0)阶乘的算法如下,其时间复杂度是()。 fact(int n) { if(n<=1) return; return n*fact(n-1); }

    A.O(logn)

    B.O(n)

    C.O(nlogn)

    D.O(n*n)


    B

  • 第3题:

    下面函数是求阶乘的递归函数,请将程序补充完整。 long Fact(int n) { if (n < 0) return 0; if (n==1 || n==0) __________________; else ____________________; }

    A.第4行: return 1 第5行: return n*Fact(n-1)

    B.第4行: return 0 第5行: return n*Fact(n-1)

    C.第4行: return -1 第5行: return (n-1)*Fact(n)

    D.第4行: return 1 第5行: return Fact(n-1)


    (1) return 1; (2)return Fact(n-1)*n;

  • 第4题:

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

    A.n-1

    B.n

    C.n+1

    D.n+2


    t fact(int n) { //n大于等于0

  • 第5题:

    【单选题】设有一个递归算法如下

    A.int fact(int n) { //n大于等于0

    B.if(n<=0) return 1;

    C.else return n*fact(n-1); }

    D.算fact(n)需要调用该函数的次数为()。

    E.n+1

    F.n-1

    G.n

    H.n+2


    D。 参考解析:需计算18次函数。