c/c++蓝桥杯经典编程题100道(1)斐波那契数列

斐波那契数列

->返回c/c++蓝桥杯经典编程题100道-目录


目录

斐波那契数列

一、题型解释

二、例题问题描述

三、C语言实现

解法1:递归(难度★)

解法2:动态规划(难度★★)

解法3:优化空间(难度★★☆)

四、C++实现

解法1:递归(难度★)

解法2:动态规划(难度★★)

解法3:矩阵快速幂(难度★★★)

五、总结对比表

六、扩展问题:输出前 n 项斐波那契数列


一、题型解释

斐波那契数列是一个经典的数学问题,定义如下:

  • 定义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, ...

常见题型:

  1. 基础问题:求第 n 个斐波那契数

  2. 优化问题:避免重复计算(如递归中的重复子问题)

  3. 扩展问题:求前 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;
}

代码逻辑

  1. 基线条件:当 n=0 或 n=1 时直接返回结果。

  2. 递归关系F(n) = F(n-1) + F(n-2),通过递归调用自身求解。

  3. 问题:重复计算严重,时间复杂度为 O(2^n),效率低。


解法2:动态规划(难度★★)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值