斐波那契数列
目录
一、题型解释
斐波那契数列是一个经典的数学问题,定义如下:
-
定义:
F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)
(n ≥ 2) -
数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
常见题型:
-
基础问题:求第
n
个斐波那契数 -
优化问题:避免重复计算(如递归中的重复子问题)
-
扩展问题:求前
n
项斐波那契数列、判断一个数是否属于斐波那契数列等
二、例题问题描述
例题1:输入整数 n
,输出第 n
个斐波那契数(假设 n <= 45
)。
例题2:输入整数 n
,输出前 n
项斐波那契数列。
三、C语言实现
解法1:递归(难度★)
通俗解释:
-
就像数数,每次数到
n
时,先数n-1
和n-2
,再把结果加起来。
c
#include <stdio.h>
int fib(int n) {
if (n == 0) return 0; // 如果 n=0,返回 0
if (n == 1) return 1; // 如果 n=1,返回 1
return fib(n - 1) + fib(n - 2); // 否则返回前两项的和
}
int main() {
int n = 10;
printf("Fibonacci(%d) = %d\n", n, fib(n)); // 输出 55
return 0;
}
代码逻辑:
-
基线条件:当
n=0
或n=1
时直接返回结果。 -
递归关系:
F(n) = F(n-1) + F(n-2)
,通过递归调用自身求解。 -
问题:重复计算严重,时间复杂度为 O(2^n),效率低。