剑指 Offer 10- I. 斐波那契数列
创始人
2024-02-19 16:10:27
0

一、题目描述

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

二、示例

示例 1:

输入:n = 2
输出:1
示例 2:

输入:n = 5
输出:5

三、题目分析 & 解题思路

斐波那契数列 是指这样一串数列:
0 1 1 2 3 5 8 13 21 34 55 89… 这样 一串数字
该串数字的规律可以总结为
相邻 的 三 个 数字 ,第 二个 + 第 一个 = 第三个
原始的数字 为 0 和 1 0 + 1 等于 1 ,依次往后
在这里插入图片描述
因此我们可以用三个变量来表示这一规律
first、second、third
third = first + second
计算出第三个结果之后我们只需要 将 third 赋值给 second,原来的 second 赋值给 first 即可,需要计算出 n(n>=2) 个 斐波那契数 循环 n - 2 次即可
即:

third = first + second;
first = second;
second = third;

同样可以使用递归的解决方法,但是由于其复杂度过高,本题 ACE 不过,因此不在此阐述

代码实现

class Solution {
public:int fib(int n) {int first = 0;int second = 1;int third = 0;if(n <2){	// 0,1return n;}else{for(int i = 2; i <=n ; i++){//注意这里是每次对结果取模(%)third = (first + second) % 1000000007;first = second;second = third; }}return third;}
};

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...