题目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. harbor仓库安装

    https://6xyun.cn/article/50 环境: 192.168.0.65 harbor .docker 一.安装相关依赖 .安装Docker Docker 使用离线版docker-ce ...

  2. Function Expression

    One of the key characteristics of function declarations is function declaration hoisting, whereby fu ...

  3. python_面试题_DB相关问题

    1.mysql部分 问题 问题1:mysql的存储引擎 问题2:mysql的索引机制 问题3:mysql的事务以及事务隔离级别 问题4:mvcc/GAP lock是做什么的 问题5:mysql的悲观锁 ...

  4. mavn Nexus Repository Manager漏洞

    https://www.secpulse.com/archives/112290.html

  5. [转帖]56核Xeon Platinum 9200现身 - 英特尔有史以来最大的CPU封装

    56核Xeon Platinum 9200现身 - 英特尔有史以来最大的CPU封装 https://www.cnbeta.com/articles/tech/835271.htm 当英特尔宣布上周正式 ...

  6. SQL 生成表结构表数据脚本

    数据库右击——>任务——>生成脚本——>选择表 ——>高级——>要编写脚本的数据的类型(架构和数据.仅限架构.仅限数据)

  7. Quartz的job中注入的services接口为空的解决办法

    自己重新定义一个类继承AdaptableJobFactory类 public class JobFactory extends AdaptableJobFactory { @Autowired pri ...

  8. ReactNative: Android与iOS平台兼容处理

    方法一: 创建不同的文件扩展名:*.android.js*.io.js 方法二: import { Platform } from 'react-native'; if (Platform.OS == ...

  9. RabbitMQ入门教程(十):队列声明queueDeclare

    原文:RabbitMQ入门教程(十):队列声明queueDeclare 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...

  10. java判断一个单向链表是否有环路

    今天刷LeetCode刷到一道这样的题,详情参见(https://leetcode-cn.com/problems/linked-list-cycle/) ADT: class ListNode { ...