请编写Python程序完成以下要求: 编写函数,求斐波那契数列第n项的值,F1=1,F2=1,Fn=Fn-1+Fn-2。

题目

请编写Python程序完成以下要求: 编写函数,求斐波那契数列第n项的值,F1=1,F2=1,Fn=Fn-1+Fn-2。


相似考题
更多“请编写Python程序完成以下要求: 编写函数,求斐波那契数列第n项的值,F1=1,F2=1,Fn=Fn-1+Fn-2。”相关问题
  • 第1题:

    计算斐波那契数列第n项的函数定义如下: intfib(intn){ if(n==0)returnl; elseif(n==l)return2: elsereturnfib(n-1)+fib(n-2); } 若执行函数调用表达式fib(2),函数fib被调用的次数是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:C
    C。【解析】针对递归调用的含义。当n为2时有fib(o),fib(1),fib(2)被调用,且fib(O),fib(1)时调用结束,即共3次。

  • 第2题:

    阅读以下说明和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即可纠正该错误。

  • 第3题:

    下列给定程序中函数fun的功能是。用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1、1、2、3、5、8、l3、21、……

    例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。


    正确答案:
    【参考答案】去掉分号(2Casel:caBe2:returnl;【考点分析】本题考查:switch语句,其一般形式为switch(表达式)cage常量表达式l:语句l;case常量表达式2:语句2;cm常量表达式n:语句n;default:语句n+1;其中switch(表达式)后不应该带有“;”,同时case语句常量后应该是“:”。【解题思路】C语言中,switch语句之后不能有分号,并且case语句常量后应用的是冒号。

  • 第4题:

    请在函数proc()的横线上填写若干表达式,使从键盘上输入一个整数n,输出斐波那契数列的前n个数。斐波那契数列是一个整数数列,该数列自第3项开始,每个数等于前面两个数之和,即0,1,1,2,3,5,8,13,21,34,55,…

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

    试题程序:


    正确答案:

    【1】n==0【2】n==1【3】proc(n-1)+proc(n-2)
    【解析】由斐波那契数列的定义可知,该数列中有两个特殊项。当n为0时,其值为0;当n为1时,其值为1。因此,【1】处填“n==0”;【2】处填“n==1”;当n为其他值时,为前两项的和,因此,[3]处填“proc(n-1)+proc(n-2)”。

  • 第5题:

    下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。


    正确答案:
    (1)去掉分号
    (2)case l:case 2:return l;
    【考点分析】
    本题考查:switch语句,其一般形式为:
    switch(表达式){
    case常量表达式1:语句l;
    case常量表达式2:语句2;
    case常量表达式n:语句n;

    其中switch(表达式)后不应该带有”;”,同时case语句常量后应该是”:“。
    【解题思路】
    c语言中,sw迎ch语句之后不能有分号,并且case语句常量后应用的是冒号。

  • 第6题:

    数据结构与算法里,斐波那契数列的第5项的值是()。

    • A、1
    • B、2
    • C、5
    • D、8

    正确答案:C

  • 第7题:

    自然界中存在丰富的斐波那契数列,斐波那契数列来源于一个古老的数学问题,是由12世纪意大利数学家斐波那契在其书中所产生的。斐波那契数列和黄金分割的关系是?()

    • A、黄金比例是斐波那契数列中的一项
    • B、斐波那契数列相邻两项的比例逐渐逼近黄金比例
    • C、黄金分割是指用斐波那契数列对一个量进行分割
    • D、黄金比例是斐波那契数列的别名

    正确答案:B

  • 第8题:

    斐波那契数列的第12项是()

    • A、89
    • B、157
    • C、144
    • D、211

    正确答案:C

  • 第9题:

    斐波那契数列的第一项是(),第七项是()。


    正确答案:1;13

  • 第10题:

    单选题
    数据结构与算法里,设fun(n)表示斐波那契数列的第n项的值,fun是函数名,n是整型参数,那么根据递归思想它应等于()。
    A

    fun(n)+fun(n-1)

    B

    fun(n-1)+fun(n-2)

    C

    fun(n-1)*fun(n-2)

    D

    fun(n-2)+fun(n-3)


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

  • 第11题:

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

    求1-n的和

    B

    求n的阶乘

    C

    斐波那契数列

    D

    n^k(^表示幂)


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

  • 第12题:

    单选题
    在1,1,2,3,5,8,13,21,34……这一斐波那契数列中,第12项是()。
    A

    143.0

    B

    144.0

    C

    145.0

    D

    146.0


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

  • 第13题:

    下列给定程序中,函数fun()的功能是:用递归算法计算斐波拉契级数列中第n项的值。从第一项起,斐波`拉契级数序列为1, 1,2,3,5,8,13,21,……例如,若给n输入7,

    该项的斐波拉契级数值为13。

    请改正程序中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <stdio.h>

    long fun(int g)

    {

    /*************found**************/

    switch(g);

    {case 0:return 0;

    switch(g)

    case 1; case 2:return 1;

    }

    return (fun(g-1)+fun(g-2));

    }

    main()

    {

    long fib; int n;

    printf("Input n:");scanf("%d",&n);

    printf("n-%d\n",n);

    fib=fun(n);

    printf("fib=%d\D\n",fib);

    }


    正确答案:(1)错误:switch(g); 正确:去掉分号 (2)错误:case 1;case 2:return 1: 正确:case 1:case 2:return 1;
    (1)错误:switch(g); 正确:去掉分号 (2)错误:case 1;case 2:return 1: 正确:case 1:case 2:return 1; 解析:C语言中,Switch语句之后不能有分号,并且Case语句常量后应用的是冒号。

  • 第14题:

    计算斐波那契数列第n项的函数定义如下: intfib(intn){ if.(n==0)return1; elseif(n==1)return2: elsereturnfib(n-1)+fib(n-2); } 若执行函数调用表达式fib(2),函数fib被调用的次数是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:C
    C。【解析】根据递归调用的含义,当n为2时有fib(o),fib(1),fib(2)被调用,且fib(0),fib(1)时调用结束,共3次。

  • 第15题:

    请编写函数proc(),它的功能是计算: s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5 在C语言中可调用log(n)函数求1n(n)。 例如,若n1的值为30,则proc()函数值为8.640500。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序:


    正确答案:

    【解析】由题目中所给表达式可知,表达式的值为m项表达式的和然后开平方。可以首先通过m次循环求得m项表达式的和,然后将其和开平方并返回到主函数当中。

  • 第16题:

    请编写函数proc(),它的功能是求Fibonacci数列中小于n的最大的一个数,结果由函数返回。

    Fibonacci数列F(n)的定义为

    F(0)=O,F(1)=1

    F(n)=F(n-1)+F(n-2)

    例如,n=500时,函数值为377。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填写所编写的若干语句。

    试题程序:


    正确答案:


    【解析】由题目中所给的公式可知,Fibonacci数列的第n项为第n-1项和第n-2项的和。要求Fibonacci数列中小于n的最大的一个数。首先根据公式求出Fibonacci数列的第n项的值,当第i项大于n,则返回第i-1项的值。

  • 第17题:

    试题四(共 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)的速度并不相同,请指出速度慢的函数名,并简要说明原因。


    正确答案:


  • 第18题:

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

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

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

  • 第19题:

    卢卡斯数列是斐波那契数列的推广,其前两项是()

    • A、1、2
    • B、1、1
    • C、2、3
    • D、1、3

    正确答案:D

  • 第20题:

    在1,1,2,3,5,8,13,21,34……这一斐波那契数列中,第12项是()。

    • A、143.0
    • B、144.0
    • C、145.0
    • D、146.0

    正确答案:B

  • 第21题:

    单选题
    自然界中存在丰富的斐波那契数列,斐波那契数列来源于一个古老的数学问题,是由12世纪意大利数学家斐波那契在其书中所产生的。斐波那契数列和黄金分割的关系是?()
    A

    黄金比例是斐波那契数列中的一项

    B

    斐波那契数列相邻两项的比例逐渐逼近黄金比例

    C

    黄金分割是指用斐波那契数列对一个量进行分割

    D

    黄金比例是斐波那契数列的别名


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

  • 第22题:

    单选题
    数据结构与算法里,斐波那契数列的第5项的值是()。
    A

    1

    B

    2

    C

    5

    D

    8


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

  • 第23题:

    单选题
    对于数列Fn,若F1=F2=1,Fn=Fn-1+Fn-2,则F8=()。
    A

    7.0

    B

    14.0

    C

    21.0

    D

    28.0


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

  • 第24题:

    单选题
    卢卡斯数列是斐波那契数列的推广,其前两项是()
    A

    1、2

    B

    1、1

    C

    2、3

    D

    1、3


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