10_求解斐波那契数列
求解斐波那契数列
题目一
写一个函数,输入 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级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划
笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...
- 求解斐波那契数列(Fibonacci Numbers)算法居然有9种,你知道哪几种吗?
By LongLuo 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为&q ...
- C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)
众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0 1 1 2 3 5 8 13 21...... 下面我们将介绍四种方法来用C语言计算机 ...
- 斐波那契递归调用次数_递归求解斐波那契数列的时间复杂度——几种简洁证明...
TL:DR: 暴力递归求解斐波那契数列的时间复杂度的紧界不是 ,而是 . 本文将给出几个简洁证明 用最暴力的方法求解斐波那契数列,时间复杂度是多少?具体地说,就是求下面这个程序的复杂度: def fi ...
- 用数学公式算法求解斐波那契数列
目录 用数学公式算法求解斐波那契数列 程序设计 程序分析 用数学公式算法求解斐波那契数列 [问题描述]给定n,n小于90,打印出前n+1个斐波那契数.从第0个开始,即F(0)=0
- 求解斐波那契数列复杂度分析
前言:斐波那契作为一个算法基础知识,大家一定要掌握,祝大家学得开心~ 什么是斐波那契数列(Fibonacci sequence)? 斐波那契数列(Fibonacci sequence),又称黄金分割数 ...
- python一只青蛙一次可以_40.细说递归之二:Python求解斐波那契数列
本篇通过青蛙跳台阶.兔子数列(斐波那契数列)问题进一步理解递归思想的魅力. 上一篇最后的题目如下: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级的台阶总共有多少种跳法? 归纳 ...
- 快速幂求解斐波那契数列
斐波那契数列 斐波那契数列是很经典也很简单的一条题目.其满足: F n = { 1 ( n ≤ 2 ) F n − 1 + F n − 2 ( n ≥ 3 ) F_{n}= \begin{cases} ...
- 求解斐波那契数列模$p$意义下最短循环节
如题,毕克老师给我们出的noip(NOIplus)模拟赛的\(Day1T1\) 首先我们知道斐波那契数列的特征根 \[\phi_1=\frac{1+\sqrt{5}}{2}\] \[\phi_2=\f ...
最新文章
- JQ实现导航效果(附效果图)
- R聚类(整群)抽样(Cluster Sampling)
- java当中的定时器怎么做_java当中的定时器的4种使用方式
- 正则表达式中^的用法
- Javascript 笔记与总结(2-6)var
- python效率提升_Python GUI开发,效率提升10倍的方法!
- 计算机常用编程英语词汇大全,计算机编程及常用术语英语词汇大全
- php 批量更新死锁,php – 在尝试获取锁定时,哪个查询导致死锁;尝试重新启动事务...
- 添加standardjs和eslint配置检测代码规范步骤
- win10安装Unbuntu的Linux系统的虚拟机02
- Android Sensor架构和原理分析
- linux 设备模型详解,Linux2.6 设备模型之input子系统详解
- 十天学会php chm,【div+css】十天学会div+css---第一天_html/css_WEB-ITnose
- 听说 Python 生成二维码很简单,说的好像我Java 很复杂一样。
- Ubuntu 修改只读文件
- webrtc 支持h264 思路
- 西方世界的劫难Ⅳ:真神的国度--十大支线攻略
- CDH6.3.1安装指南
- 马托石头问题-java(大马中马小马托石头)
- APP瘦身大法--AndResGuard的使用