题目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的更多相关文章

  1. python实现斐波那契数列(Fibonacci sequence)

    使用Python实现斐波那契数列(Fibonacci sequence) 斐波那契数列形如 1,1,2,3,5,8,13,等等.也就是说,下一个值是序列中前两个值之和.写一个函数,给定N,返回第N个斐 ...

  2. 斐波那契数列(Fibonacci) iOS

    斐波那契数列Fibonacci 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2 ...

  3. 使用一位数组解决 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 ...

  4. 使用并行的方法计算斐波那契数列 (Fibonacci)

    更新:我的同事Terry告诉我有一种矩阵运算的方式计算斐波那契数列,更适于并行.他还提供了利用TBB的parallel_reduce模板计算斐波那契数列的代码(在TBB示例代码的基础上修改得来,比原始 ...

  5. 练习六:斐波那契数列(fibonacci)

    题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. 在数学上,斐波那契数列 ...

  6. Java实现斐波那契数列Fibonacci

    import java.util.Scanner; public class Fibonacci { public static void main(String[] args) { // TODO ...

  7. 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, … ...

  8. 斐波那契数列Fibonacci问题—动态规划

    斐波那契数列定义 Fibonacci array:1,1,2,3,5,8,13,21,34,... 在数学上,斐波那契数列是以递归的方法来定义: F(0) = 0 F(1) = 1 F(n) = F( ...

  9. rust实战系列 - 使用Iterator 迭代器实现斐波那契数列(Fibonacci )

    为什么是斐波那契数列 斐波那契数列十分适合用来实战rust的迭代器,算法也很简单,一目了然.这个例子可以用来学习Iterator的使用,十分适合刚学习了rust的迭代器章节后用来练练手. 代码实战 d ...

随机推荐

  1. CoverflowJS

    coverflow是苹果首创的将多首歌曲的封面以3D界面的形式显示出来的方式 GitHub地址:[https://github.com/coverflowjs/coverflow] 下载地址:[htt ...

  2. 【MM系列】SAP S/4 HANA 1511的BP角色创建及供应商数据的创建方法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP S/4 HANA 1511的 ...

  3. tensorflow增强学习应用于一个小游戏

    首先需要安装gym模块,提供游戏的. 1,所需模块 import tensorflow as tf import numpy as np import gym import random from c ...

  4. MySQL 服务正在启动 MySQL 服务无法启动解决途径

    解决方案: 1.删除自己手动创建的data文件夹: 2.管理员权限CMD的bin目录下,移除已错误安装的mysqld服务: mysqld -remove MySQL出现删除成功! 3.在CMD的bin ...

  5. discuz 设置

    veikei_dz_com_20120821_gray_free 模板  论坛 瀑布流 需要在后台设置  论坛--板块管理--编辑对应板块--扩展设置--开启图片列表模式 FAQ 帮助页面 在后台管理 ...

  6. Laravel中一些要记住 的写法

    模型篇: 1.根据数据库部分URL返回完整的URL public function getImageUrlAttribute() { // 如果 image 字段本身就已经是完整的 url 就直接返回 ...

  7. urllib:处理网络异常

    from urllib import request, error import ssl import urllib.request import socket import urllib.error ...

  8. spark 常用设置

    1.spark.hadoop.validateOutputSpecs 若设置为true,saveAsHadoopFile会验证输出目录是否存在.虽然设为false可直接覆盖文件路径

  9. HDU 6175 算术

    题目大意 求 $\sum_{i = 1}^{n} \sum_{j = 1}^{m} \mu(\lcm(i, j))$ . $ 1 \le n, m \le 10^6 $ . 分析 不妨设 $ n \l ...

  10. python中几个常见的魔法方法

    首先,什么是魔法方法呢?在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做"魔法"方法. __ init__()方法 当一个实例被创建的时候调用的初始 ...