Java斐波那契数列
来源:互联网 发布:引物设计软件olige 编辑:程序博客网 时间:2024/06/08 17:20
斐波那契数列定义如下:
当n=0时,f(0) = 0;
当n=1时,f(1) = 1;
当n>1时,f(n) = f(n-1)+f(n-2);
下面分别演示递归算法和非递归算法:
1.递归算法
public static int fibonacci(int n) throws Exception { if (n < 0) throw new Exception("n为非法值!"); if (n == 0) return 0; if (n == 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); }
斐波那契的递归算法效率很低,效率低下的原因是重复计算值。当n=100时,慢的要死。
2.非递归算法
/** * 改进后的算法 * * @param n * @return * @throws Exception */ public static long fibonacci2(int n) throws Exception { if (n < 0) throw new Exception("n为非法值!"); if (n == 0) return 0; if (n == 1) return 1; long f0 = 0L; long f1 = 1L; long fn = 0; for (int i = 2; i <= n; i++) { fn = f0+f1; f0 = f1; f1 = fn; } return fn; }
递归算法的变种:
一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上一个n级台阶总共有多少种跳法。
分析:首先如果只有1级台阶,显然只有一种跳法。如果有2级台阶,就有两种跳法:跳两个一级和一次跳两级。
接着讨论其他情况,如果有n级台阶(n>1)。青蛙第一次跳的时候分两种情况,第一次是跳一级,那么就有f(n-1)种跳法,如果第一次跳两级,那么就有f(n-2)种跳法,所以f(n) = f(n-1)+f(n-2);典型的斐波那契数列。
0 0
- 斐波那契数列 java
- Java计算斐波那契数列
- 斐波那契数列Java版
- 斐波那契数列(java/c++)
- Java实现斐波那契数列
- JAVA---斐波那契数列
- Java实现斐波那契数列
- java实现斐波那契数列
- 斐波那契数列 java
- 斐波那契数列--Java
- Java之斐波那契数列
- java 斐波那契数列
- JAVA实现--斐波那契数列
- 斐波那契数列java实现
- 斐波那契数列 Java实现
- java斐波那契数列
- java实现斐波那契数列
- 斐波那契数列(Java)
- SSM框架——Spring+SpringMVC+Mybatis的搭建教程
- 线程的join()方法
- Add Two Numbers
- 利用高德地图关键字检索POI-实现仿微信发朋友圈搜索附近位置
- java中二进制、八进制、十六制相互转换
- Java斐波那契数列
- aria2的libaria2在windows使用的资料搜集
- VMware虚拟机三种网络模式详解 Bridged(桥接模式)
- Linux查看opencv 版本
- Android -- 短信验证就是那么简单
- 6.分布式文件存储系统
- 写一个简单的shell命令解释器
- L2-005. 集合相似度
- [FFMPEG-功能]Device