求解斐波那契数列

题目一

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 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 <= n <= 100

解法: 可以通过递归和循环的方式来求解,但是自顶向下递归的过程中存在大量的重复计算,导致浪费时间。
可以通过自底向上的循环进行计算,可以避免重复计算。
solution(自底向上):

class Solution {
public:int fib(int n) {if(n==0)return 0;if(n==1)return 1;unsigned int i = 2;long long a = 0,b = 1,mod = 1e9+07;long long result;while(i++ <= n){result = (a + b) % mod;a = b;b = result;}return result;}
};

题目二

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

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

提示:

  • 0 <= n <= 100

解法: 与斐波那契数量是一样的,这里的数列相当于斐波那契数列往后移动了一位。
solution:

class Solution {
public:int numWays(int n) {if(n==0)return 1;if(n==1)return 1;if(n==2)return 2;int i = 3;long long a = 1,b = 2,mod = 1e9+07;long long result = 0;while(i++ <= n){result = (a + b) % mod;a = b;b = result;}return result;}
};

10_求解斐波那契数列相关推荐

  1. 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划

    笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...

  2. 求解斐波那契数列(Fibonacci Numbers)算法居然有9种,你知道哪几种吗?

    By LongLuo 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为&q ...

  3. C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)

    众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0  1  1  2  3  5  8  13  21...... 下面我们将介绍四种方法来用C语言计算机 ...

  4. 斐波那契递归调用次数_递归求解斐波那契数列的时间复杂度——几种简洁证明...

    TL:DR: 暴力递归求解斐波那契数列的时间复杂度的紧界不是 ,而是 . 本文将给出几个简洁证明 用最暴力的方法求解斐波那契数列,时间复杂度是多少?具体地说,就是求下面这个程序的复杂度: def fi ...

  5. 用数学公式算法求解斐波那契数列

    目录 用数学公式算法求解斐波那契数列 程序设计 程序分析 用数学公式算法求解斐波那契数列 [问题描述]给定n,n小于90,打印出前n+1个斐波那契数.从第0个开始,即F(0)=0

  6. 求解斐波那契数列复杂度分析

    前言:斐波那契作为一个算法基础知识,大家一定要掌握,祝大家学得开心~ 什么是斐波那契数列(Fibonacci sequence)? 斐波那契数列(Fibonacci sequence),又称黄金分割数 ...

  7. python一只青蛙一次可以_40.细说递归之二:Python求解斐波那契数列

    本篇通过青蛙跳台阶.兔子数列(斐波那契数列)问题进一步理解递归思想的魅力. 上一篇最后的题目如下: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级的台阶总共有多少种跳法? 归纳 ...

  8. 快速幂求解斐波那契数列

    斐波那契数列 斐波那契数列是很经典也很简单的一条题目.其满足: F n = { 1 ( n ≤ 2 ) F n − 1 + F n − 2 ( n ≥ 3 ) F_{n}= \begin{cases} ...

  9. 求解斐波那契数列模$p$意义下最短循环节

    如题,毕克老师给我们出的noip(NOIplus)模拟赛的\(Day1T1\) 首先我们知道斐波那契数列的特征根 \[\phi_1=\frac{1+\sqrt{5}}{2}\] \[\phi_2=\f ...

最新文章

  1. JQ实现导航效果(附效果图)
  2. R聚类(整群)抽样(Cluster Sampling)
  3. java当中的定时器怎么做_java当中的定时器的4种使用方式
  4. 正则表达式中^的用法
  5. Javascript 笔记与总结(2-6)var
  6. python效率提升_Python GUI开发,效率提升10倍的方法!
  7. 计算机常用编程英语词汇大全,计算机编程及常用术语英语词汇大全
  8. php 批量更新死锁,php – 在尝试获取锁定时,哪个查询导致死锁;尝试重新启动事务...
  9. 添加standardjs和eslint配置检测代码规范步骤
  10. win10安装Unbuntu的Linux系统的虚拟机02
  11. Android Sensor架构和原理分析
  12. linux 设备模型详解,Linux2.6 设备模型之input子系统详解
  13. 十天学会php chm,【div+css】十天学会div+css---第一天_html/css_WEB-ITnose
  14. 听说 Python 生成二维码很简单,说的好像我Java 很复杂一样。
  15. Ubuntu 修改只读文件
  16. webrtc 支持h264 思路
  17. 西方世界的劫难Ⅳ:真神的国度--十大支线攻略
  18. CDH6.3.1安装指南
  19. 马托石头问题-java(大马中马小马托石头)
  20. APP瘦身大法--AndResGuard的使用

热门文章

  1. Halcon 简单入门3D点云计算高度
  2. Android人脸识别和证件识别
  3. 多媒体艺术家jaime levy在网站甚至还没有存在之前就处于网页设计的最前沿
  4. mpvue 如何使用腾讯视频插件?
  5. 多项式回归(PolynomialFeatures)
  6. 育人才,促就业!全国高等学校民航服务技能大赛吸引广泛关注
  7. Flink 最锋利的武器:Flink SQL 入门和实战带你了解NBA球星数据
  8. 用win32 api画圆和椭圆
  9. php nss,GSM 网络交换子系统(NSS)
  10. DDGDataCache OC文件缓存,代码简单,功能强大