更多“已知递归函数f(n)的功能是计算 1+2+3…n,且n>=1,应采用的代码段是_____. ”相关问题
  • 第1题:

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

  • 第2题:

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

  • 第3题:

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


    15

  • 第4题:

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

  • 第5题:

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

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

    答案:C
    解析:
    本题考查程序语言基础知识。
    分析递归代码执行过程可知,由于调用函数时系统需要在栈区开辟支持函数运行时需要的空间(大多数局部变量的存储单元即分配在此空间中),同时还需造成控制流的转移、返回位置的记录和恢复等工作,同时在该例子中存在着重复计算,例如计算只时要通过递归调用分别计算F3和F2,而在计算F3时,则要通过递归调用分别计算F2和F1,其中F2的计算会重复,因此递归代码执行时需要进行一系列的函数调用及返回且存在重复计算都是比较耗时的。