Java还要再学一遍基础(十四)实现斐波那契数列
来源:互联网 发布:sas sql 编辑:程序博客网 时间:2024/05/18 17:54
费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数、斐波那契数列、费氏数列、黄金分割数列。
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
实现:
/**递归实现 * @param n * @return */public static int fibonacci_recursion(int n) {if (n < 0)throw new IllegalArgumentException("n can not less than zero");return n <= 2 ? 1 : fibonacci_recursion(n-1) + fibonacci_recursion(n - 2);}
递归一般随着n的增大效率很低
/**循环实现 * @param n * @return */public static int fibonacci_loop(int n) {if (n < 0)throw new IllegalArgumentException("n can not less than zero");if (n <= 2)return 1;int n1 = 1;int n2 = 1;int r = 0;for (int i = 0; i < n - 2; i++) {r = n1 + n2;n1 = n2;n2 = r;}return r;}使用int或者long来存储结果,一般随着n增大都会出现溢出的问题。
使用BigInteger
/**BigInteger循环实现 * @param n * @return */public static String fibonacii_bigInteger(int n) {if (n < 0)throw new IllegalArgumentException("n can not less than zero");if (n <= 2)return "1";BigInteger n1 = BigInteger.ONE;BigInteger n2 = BigInteger.ONE;BigInteger r = BigInteger.ZERO;for (int i = 0; i < n - 2; i++) {r = n1.add(n2);n1 = n2;n2 = r;}return r.toString();}
BigInteger内部实现比较繁杂这也导致了速度稍稍慢了一些,但是不存在溢出的问题
阅读全文
0 0
- Java还要再学一遍基础(十四)实现斐波那契数列
- 斐波那契数列-java基础
- Java实现斐波那契数列
- Java实现斐波那契数列
- java实现斐波那契数列
- JAVA实现--斐波那契数列
- 斐波那契数列java实现
- 斐波那契数列 Java实现
- java实现斐波那契数列
- Java实现斐波那契数列
- java实现斐波那契数列
- 斐波那契数列 Java实现
- Java实现斐波那契数列
- java实现斐波那契数列
- Java实现-斐波那契数列
- JAVA实现“斐波那契数列”
- 斐波那契数列java实现
- java实现斐波那契数列
- Git的配置和使用帮助
- 【PBR】substance painter中贴图至vray for max渲染
- DirectX 12 持续整理 ——3. 变换
- python爬取上海链家网二手房数据
- 线性布局键盘覆盖EditText问题
- Java还要再学一遍基础(十四)实现斐波那契数列
- mac安装 brew
- Linux下如何部署可执行 jar包,并关闭此运行窗口
- spring boot 备忘
- C++ typedef中间有逗号
- 阻塞队列BlockingQueue
- JavaSE 详解volatile关键字
- 闪电网络、雷电网络和CORDA
- Java web项目使用webSocket