当前位置: 首页 > news >正文

牛客网NC231954:斐波那契数列 (简单的数列问题)

牛客网NC231954:斐波那契数列 (简单的数列问题)

题目描述

在这里插入图片描述

本题要求我们计算斐波那契数列的第n项,斐波那契数列定义如下:

  • f(1) = 1
  • f(2) = 1
  • f(n) = f(n-1) + f(n-2),当n ≥ 3

给定整数n,求f(n)的值。

算法思路

斐波那契数列是一个经典问题,有多种解法:

  1. 递归法(不推荐,时间复杂度高)
  2. 动态规划(使用数组存储所有值)
  3. 迭代法(只保存必要的变量)

本题采用了迭代法,只保存前两个数字状态,空间复杂度为O(1),时间复杂度为O(n)。

代码实现

#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int f1=1,f2=1,f3;if(n==1)f3=f1;if(n==2)f3=f2;else {for(int i=3;i<=n;i++){f3=f1+f2;f2=f1;f1=f3;}}cout<<f3<<endl;
}

代码详解

  1. 变量初始化

    • f1=1:表示f(1)的值
    • f2=1:表示f(2)的值
    • f3:用于存储计算结果
  2. 基础情况处理

    • 当n=1时,直接返回f1的值,即1
    • 当n=2时,直接返回f2的值,即1
  3. 迭代计算

    • 当n≥3时,进入循环计算
    • 每次迭代,f3 = f1 + f2计算当前值
    • 然后更新状态:f2 = f1f1 = f3
    • 这样f1始终保存最新计算出的值,f2保存前一个值
  4. 输出结果:最终f3存储了f(n)的值

复杂度分析

  • 时间复杂度:O(n),需要循环n-2次
  • 空间复杂度:O(1),只使用了常数级别的存储空间

总结

这段代码简洁高效地解决了斐波那契数列问题。采用迭代方法避免了递归带来的重复计算问题,优化了时间和空间复杂度。值得注意的是,当处理更大的n值时,需要考虑整数溢出问题,可能需要使用长整型或其他方法来处理。

相关文章:

  • Ubuntu离线安装Minio
  • DeepSeek模型架构详解:从Transformer到MoE
  • ‌JMeter聚合报告中的任务数和并发数区别
  • 【AI News | 20250515】每日AI进展
  • 数据结构——例题3
  • Function Calling
  • 【LLIE专题】基于码本先验与生成式归一化流的低光照图像增强新方法
  • OpenHarmony 5.1.0 Release目录结构详细解析(3级目录)
  • 解读RTOS 第八篇 · 内核源码解读:以 FreeRTOS 为例
  • AAC 协议
  • MyBatis 的分页插件 c
  • 交通运输与能源融合发展——光储充在交通上的应用完整解决方案
  • 【hadoop】sqoop案例 hive->mysql
  • python克洛伊婚纱摄影预约管理系统
  • 纯前端实现基于位置的天气和动态背景图片
  • 【优化算法】协方差矩阵自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)
  • [项目深挖]仿muduo库的并发服务器的解析与优化方案
  • 解决ubuntu20中tracker占用过多cpu,引起的风扇狂转
  • 人体肢体工作识别-一步几个脚印从头设计数字生命——仙盟创梦IDE
  • MySQL读写分离
  • 国家卫生健康委通报关于肖某引发舆情事件调查处置进展情况
  • 秦洪看盘|缩量回踩,积蓄叩关能量
  • 《求是》杂志发表习近平总书记重要文章《锲而不舍落实中央八项规定精神,以优良党风引领社风民风》
  • Offer触手可及,2025上海社会组织联合招聘专场活动正寻找发光的你
  • 3年多来俄乌要首次直接对话?能谈得拢吗?
  • 上海国际电影节纪录片单元,还世界真实色彩