试题四(共 15 分) 阅读以下说明和 C 函数代码,回答问题并将解答写在答题纸的对应栏内。 [说明] 著
试题四(共 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)的速度并不相同,请指出速度慢的函数名,并简要说明原因。