9 斐波那契数列Fibonacci
题目1:写一个函数,输入n,求Fibonacci数列的第n项。该数列定义如下:
n=0时,f(n)=0;
n=1时,f(n)=1;
n>1时,f(n)=f(n-1)+f(n-2)
1、 效率差的递归算法:时间复杂度以n的指数的方式递增。因为求f(10)=f(9)+f(8);f(9)=f(8)+f(7);f(8)=f(7)+f(6);可以看出有很多项是重复计算的。
//斐波那契数列,递归。通过测试
//f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)
public class Fibonacci{
public static void main(String[] args){
System.out.println(fibonacci(8));
}
public static int fibonacci(int n){
if(n<=0){//此处避免无法处理n<0的情况!!!
return 0;
}
if(n==1){
return 1;
}
return fibonacci(n-1)+fibonacci(n-2);
}
}
2、进一步改进,非递归算法(时间复杂度O(n))
//斐波那契数列,非递归。通过测试
//f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)
public class Fibonacci{
public static void main(String[] args){
System.out.println(fibonacci(2));
}
public static int fibonacci(int n){
if(n<=0){//此处避免无法处理n<0的情况!!!
return 0;
}
if(n==1){
return 1;
}
int minusOne = 1;
int minusTwo = 0;
int fibN = 0;
for(int i = 2; i<=n; i++){
fibN = minusOne + minusTwo;
minusTwo = minusOne;
minusOne = fibN;
}
return fibN;
}
}
题目2:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶共多少种跳法。答案:斐波那契数列f(n)=f(n-1)+f(n-2)
题目3:一只青蛙一次可以跳上1级台阶,也可以跳上2级……也可以跳上n级。求该青蛙跳上一个n级的台阶共多少种跳法。答案:数学归纳法可得f(n)=2n-1
题目4:可以用2*1(单位:cm)的小矩形横着或者竖着去覆盖更大的矩形。请问8个2*1的小矩形无重叠覆盖一个2*8的大矩形,共有多少中方法?
答案:f(8)=f(7)+f(6),依然是斐波那契数列问题。
9 斐波那契数列Fibonacci的更多相关文章
- python实现斐波那契数列(Fibonacci sequence)
使用Python实现斐波那契数列(Fibonacci sequence) 斐波那契数列形如 1,1,2,3,5,8,13,等等.也就是说,下一个值是序列中前两个值之和.写一个函数,给定N,返回第N个斐 ...
- 斐波那契数列(Fibonacci) iOS
斐波那契数列Fibonacci 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2 ...
- 使用一位数组解决 1 1 2 3 5 8 13 数列问题 斐波纳契数列 Fibonacci
斐波纳契数列 Fibonacci 输出这个数列的前20个数是什么? 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 使用数组实现输出数列的前30 ...
- 使用并行的方法计算斐波那契数列 (Fibonacci)
更新:我的同事Terry告诉我有一种矩阵运算的方式计算斐波那契数列,更适于并行.他还提供了利用TBB的parallel_reduce模板计算斐波那契数列的代码(在TBB示例代码的基础上修改得来,比原始 ...
- 练习六:斐波那契数列(fibonacci)
题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. 在数学上,斐波那契数列 ...
- Java实现斐波那契数列Fibonacci
import java.util.Scanner; public class Fibonacci { public static void main(String[] args) { // TODO ...
- k阶斐波那契数列fibonacci第n项求值
已知K阶斐波那契数列定义为:f0 = 0, f1 = 0, … , fk-2 = 0, fk-1 = 1;fn = fn-1 + fn-2 + … + fn-k , n = k , k + 1, … ...
- 斐波那契数列Fibonacci问题—动态规划
斐波那契数列定义 Fibonacci array:1,1,2,3,5,8,13,21,34,... 在数学上,斐波那契数列是以递归的方法来定义: F(0) = 0 F(1) = 1 F(n) = F( ...
- rust实战系列 - 使用Iterator 迭代器实现斐波那契数列(Fibonacci )
为什么是斐波那契数列 斐波那契数列十分适合用来实战rust的迭代器,算法也很简单,一目了然.这个例子可以用来学习Iterator的使用,十分适合刚学习了rust的迭代器章节后用来练练手. 代码实战 d ...
随机推荐
- python3.5以后venv创建/激活/退出虚拟环境
1.创建虚拟环境 $ python3 -m venv <环境名称> 2.激活虚拟环境 $ source <环境名称>/bin/activate 3.关闭虚拟环境 $ deact ...
- WebApi使用二进制方式上传和下载文件
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; usi ...
- 【Python开发】【神经网络与深度学习】如何利用Python写简单网络爬虫
平时没事喜欢看看freebuf的文章,今天在看文章的时候,无线网总是时断时续,于是自己心血来潮就动手写了这个网络爬虫,将页面保存下来方便查看 先分析网站内容,红色部分即是网站文章内容div,可以看 ...
- 【图像处理】【计算机视觉】findContours的使用
原文地址:findContours函数参数说明及相关函数作者:鸳都学童 findContours函数,这个函数的原型为: void findContours(InputOutputArray imag ...
- yum安装nginx(Centos)
测试人员需要了解Nginx?nginx的别名有很多:中间件,HTTP服务器,代理服务器等,这些名字都是作用的一个体现.在实际项目中,前后端分离,负载均衡等也是通过Nginx实现的,知己知彼,百战百胜. ...
- tableau日常管理
各文件位置: https://help.tableau.com/current/server-linux/zh-cn/cli_default_filepaths_tsm.htm ldap配置: htt ...
- PostgreSQL创建只读账户
目前PostgreSQL并不能像MySQL一样直接对某个数据库赋予只读权限,现实中有研发需要新建一个用户然后赋予对某个数据库只读权限. 举例说明如何创建 用edbstore用户连接edbstore数据 ...
- React基础篇学习
到今天为止, 使用react已经一年了, 现在整理一下入门时的一些重要知识, 帮助想要学习react的同学们理解某些内容. React 元素 React 元素,它是 React 中最小基本单位,我们可 ...
- ftp读取图片并转Base64
public String download(String ftpUrl,String sfzh){ FTPClient ftpClient = new FTPClient(); InputStrea ...
- Python 入门之 内置模块 -- datetime模块
Python 入门之 内置模块 -- datetime模块 1.datetime模块 from datetime import datetime (1)datetime.now() 获取当前时间和日期 ...