C 语言斐波那契数列 MCQ 练习题 3

2025年1月29日 | 阅读3分钟

1. 下面 C 语言代码的输出是什么?

  1. 1, 1, 2, 3, 5
  2. 0, 1, 1, 2, 3, 5
  3. 0, 1, 1, 2, 3, 5, 8
  4. 0, 1, 2, 3, 5, 8

说明

  • 正确答案是选项 “c”。该序列对应于代码生成的斐波那契数列,其中每个数字都是其前两个数字之和,从 0 到 1 开始。

2. 关于斐波那契数列,以下哪项陈述是正确的?

  1. 它是一个算术级数。
  2. 每一项是前两项的和。
  3. 数列从 1 和 2 开始。
  4. 以上都不是。

说明

  • 正确答案是选项 “b”。此陈述正确定义了斐波那契数列。在斐波那契数列中,从第三项开始,每个数字都等于其前两个数字之和。

3. 以下哪个函数使用递归正确返回第 n 个斐波那契数?

a

b

c

d


说明

  • 正确答案是选项 “b”。基本情况 (fib(0) 和 fib(1)) 得到适当处理,对于大于 1 的“num”,斐波那契数通过递归将 fib(num - 1) 和 fib(num - 2) 的结果相加来计算。此方法确保了 num >= 0 的所有有效输入的准确结果,并符合斐波那契数列的标准定义。

4. 以下关于斐波那契函数递归调用的陈述,哪个是正确的?

  1. 它使用动态规划。
  2. 它比迭代方法更高效。
  3. 它的时间复杂度为 O(n)。
  4. 它的时间复杂度是指数级的。

说明

  • 正确答案是选项 “d”。朴素的递归斐波那契函数具有指数时间复杂度,即 O(2^n)。这是由于每个函数调用都会分支为两个递归调用,导致函数调用次数随 n 呈指数级增长。

5. 在下面斐波那契数列的递归函数中,基本情况是什么?

  1. return fib(n - 1) + fib(n - 2)
  2. 返回 0
  3. n <= 1
  4. return 1

说明

  • 正确答案是选项 “d”。当 num 为 0 或 1 时,函数确保直接返回 num,由于条件 (if (num = 1) return num;),在这些情况下终止递归并返回正确的斐波那契数。

6. 以下哪些序列与斐波那契数列没有任何关系?

  1. 佩尔序列 (Pell sequence)
  2. 帕多万序列 (Padovan sequence)
  3. 几何序列 (Geometric sequence)
  4. 卢卡斯序列 (Lucas sequence)

说明

  • 正确答案是选项 “c”。给出的选项中,几何序列与斐波那契数列无关。几何序列的生成规则不同于斐波那契、卢卡斯、佩尔和帕多万序列,它涉及乘以一个常数比率。