Fibnacci数列的定义为:F0=0,F1=1,Fn=Fn-1+Fn-2(n≥2,n∈N*),要计算该数列的任意项Fn,既可以采用递归方式编程也可以采用循环语句编程,由于( ),所以需要较多的运行时间。A.递归代码经编译后形成较长目标代码 B.递归代码执行时多次复制同一段目标代码 C.递归代码执行时需要进行一系列的函数调用及返回且存在重复计算 D.递归代码执行过程中重复存取相同的数据

题目
Fibnacci数列的定义为:F0=0,F1=1,Fn=Fn-1+Fn-2(n≥2,n∈N*),要计算该数列的任意项Fn,既可以采用递归方式编程也可以采用循环语句编程,由于( ),所以需要较多的运行时间。

A.递归代码经编译后形成较长目标代码
B.递归代码执行时多次复制同一段目标代码
C.递归代码执行时需要进行一系列的函数调用及返回且存在重复计算
D.递归代码执行过程中重复存取相同的数据

相似考题
更多“Fibnacci数列的定义为:F0=0,F1=1,Fn=Fn-1+Fn-2(n≥2,n∈N*),要计算该数列的任意项Fn,既可以采用递归方式编程也可以采用循环语句编程,由于( ),所以需要较多的运行时间。A.递归代码经编译后形成较长目标代码 B.递归代码执行时多次复制同一段目标代码 C.递归代码执行时需要进行一系列的函数调用及返回且存在重复计算 D.递归代码执行过程中重复存取相同的数据”相关问题
  • 第1题:

    已知递归函数fun的定义如下: int fun(int n) { if(n<=1)return 1;//递归结束情况 else return n*fun(n-2);//递归 } 则函数调用语句fun(5)的返回值是( )。

    A.5

    B.12

    C.15

    D.30


    正确答案:C
    解析:递归函数fun被定义为含有参数int n返回整型.其中 fun函数递归调用本身,当n=1时,fun返回1,如果大于1那么执行n*fun(n-2)。所以,当n等于5时,执行5*fun(3);当n等于3时继续调用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案为15。

  • 第2题:

    堆栈溢出一般是由什么原因导致的。()

    A.循环的递归调用

    B.大数据结构的局部变量

    C.函数代码长度过长

    D.代码运行时错误


    正确答案:B

  • 第3题:

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

  • 第4题:

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

  • 第5题:

    已知递归函数fun的定义如下: int fun(int n) { if(n<=1)return1;//递归结束情况 else return n*fun(n-2);//递归 } 则函数调用语句fun(5)的返回值是( )。

    A.5

    B.12

    C.15

    D.30


    正确答案:C
    解析:递归函数fun被定义为含有参数int n,返同整型。其中fun函数递归调用本身,当n=1时,fun返回1,如果大于1那么执行n*fun(n-2)。所以,当n等于5时,执行5*fun(3);当3时继续调用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案为15。

  • 第6题:

    试题四(共 15 分)

    阅读以下说明和 C 函数代码,回答问题并将解答写在答题纸的对应栏内。

    [说明]

    著名的菲波那契数列定义式为

    f1 = 1 f2 = 1 fn = fn-1 + fn-2 (n = 3,4,…)

    因此,从第 1 项开始的该数列为 1,1,2,3,5,8,13,21,…。函数 fib1 和 fib2 分别用递归方式和迭代方式求解菲波那契数列的第 n 项(调用 fib1、fib2 时可确保参数 n 获得一个正整数) 。

    [C函数代码]

    [问题 1](6 分)

    函数 fib1 和 fib2 存在错误,只需分别修改其中的一行代码即可改正错误。

    (1)函数 fib1 不能通过编译,请写出 fib1 中错误所在行修改正确后的完整代码;

    (2)函数 fib2 在n≤2 时不能获得正确结果,请写出 fib2 中错误所在行修改正确后的完整代码。

    [问题 2](3 分)

    将函数 fib1 和 fib2 改正后进行测试,发现前 46 项都正确,而第 47 项的值是一个负数,请说明原因。

    [问题 3](6 分)

    函数 fib1、fib2 求得菲波那契数列第 n 项(n>40)的速度并不相同,请指出速度慢的函数名,并简要说明原因。


    正确答案:


  • 第7题:

    设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次。

  • 第8题:

    在下述哪种情况下适宜采用inline定义内联函数。()

    • A、函数体含有循环语句
    • B、函数体含有递归语句
    • C、函数代码少、频繁调用
    • D、函数体含有switch语句

    正确答案:C

  • 第9题:

    关于递归的有关内容描述项正确的是()

    • A、可以采用递归解决汉诺塔游戏的问题
    • B、递归可以分为直接递归与间接递归
    • C、可以采用递归解决求一个数n!问题
    • D、递归就是在过程或函数里调用自身

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

  • 第10题:

    多选题
    数据结构与算法里,关于递归说法正确的是()。
    A

    递归是函数自身调用编程技术

    B

    有返回值的函数可以是递归的函数

    C

    无返回值函数是不能使用递归的

    D

    递归分为直接递归和间接递归


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

  • 第11题:

    多选题
    python中递归函数的作用()
    A

    缩小问题规模

    B

    代码简洁

    C

    代码易懂

    D

    代码清晰


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

  • 第12题:

    多选题
    递归的好处描述不正确的是()。
    A

    只需少量的程序就可描述出解题过程所需要的多次重复计算

    B

    需要大量的程序就可描述出解题过程所需要的多次重复计算

    C

    大大地增加了程序的代码量

    D

    大大地减少了程序的代码量


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

  • 第13题:

    一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程()。

    A.较快

    B.较慢

    C.相同

    D.无法确定


    正确答案:B

  • 第14题:

    阅读以下说明和C函数代码,回答问题并将解答写在对应栏内。

    【说明】

    著名的菲波那契数列定义式为

    f1=1 f2=1 fn=fn-1+fn-2 (n=3,4,…)

    因此,从第1项开始的该数列为1,1,2,3,5,8,13,21,…。函数fibl和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项(调用fib1、fib2时可确保参数n获得一个正整数)。

    【C函数代码】

    函数fib1和fib2存在错误,只需分别修改其中的一行代码即可改正错误。

    (1)函数fib1不能通过编译,请写出fib1中错误所在行修改正确后的完整代码。

    (2)函数fib2在n≤2时不能获得正确结果,请写出fib2中错误所在行修改正确后的完整代码。


    正确答案:(1) return fib1(n-1)+fib1(n-2);或return(fib1(n-1)+fib1(n-2)); (2) long f=1;或long f=(long)1;或long f=1L;
    (1) return fib1(n-1)+fib1(n-2);或return(fib1(n-1)+fib1(n-2)); (2) long f=1;或long f=(long)1;或long f=1L; 解析:函数fib1不能通过编译,原因在于语句“fib1(n)=fib1(n-1)+fib1(n-2)”出错,该语句中fib1(n)、fib1(n-1)、fib1(n-2)都是函数调用,由于fib1是返回长整型数据的函数,所以不能为函数调用fib1(n)赋值。该语句处应将fib1(n-1)+fib1(n-2)的值作为返回值,形式为“returnfib1(n-1)+fib1(n-2)”。
    在函数fib2中,for语句从i等于3开始循环,用于计算菲波那契数列第3项及以后各项的值。对于n等于1或2,for语句的循环体并不执行,因此对于第1、2项数列值,最后返回的f值是不确定的,为f赋初值1即可纠正该错误。

  • 第15题:

    已知递归函数f(n)的功能是计算 1+2+3…n,且n>=1,应采用的代码段是_____.


    正确答案:
     

  • 第16题:

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

  • 第17题:

    在 ______ 情况下适宜采用inline定义内联函数。

    A.函数体含有循环语句

    B.函数体含有递归语句

    C.函数代码少、频繁调用

    D.函数代码多、不常调用


    正确答案:A

  • 第18题:

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

    int f(int n)

    {

    if(n <=1)return 1; //递归结束情况

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

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


    正确答案:15
    15 解析:本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的,f()函数在n小于等于1时返回1,而在其余情况下返回n*f(n-2)。所以本题的递归算法可以表示为:

    题目要求的结果是f(5),即f(5)=5*f(3)=5*3*f(1)=5*3*1=15。故应该填15。

  • 第19题:

    递归的好处描述不正确的是()。

    • A、只需少量的程序就可描述出解题过程所需要的多次重复计算
    • B、需要大量的程序就可描述出解题过程所需要的多次重复计算
    • C、大大地增加了程序的代码量
    • D、大大地减少了程序的代码量

    正确答案:B,C

  • 第20题:

    数据结构与算法里,关于递归说法正确的是()。

    • A、递归是函数自身调用编程技术
    • B、有返回值的函数可以是递归的函数
    • C、无返回值函数是不能使用递归的
    • D、递归分为直接递归和间接递归

    正确答案:A,B,D

  • 第21题:

    python中递归函数的作用()

    • A、缩小问题规模
    • B、代码简洁
    • C、代码易懂
    • D、代码清晰

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

  • 第22题:

    单选题
    在下述哪种情况下适宜采用inline定义内联函数。()
    A

    函数体含有循环语句

    B

    函数体含有递归语句

    C

    函数代码少、频繁调用

    D

    函数体含有switch语句


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

  • 第23题:

    单选题
    适宜采用inline定义函数情况是()
    A

    函数体含有循环语句

    B

    函数体含有递归语句

    C

    函数代码少、频繁调用

    D

    函数代码多、不常调用


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