斐波那契数列

来源:互联网 发布:武汉理工大网络 编辑:程序博客网 时间:2024/05/19 01:08

剑指offer第九题,根据数学关系,第一反应就是递归,代码如下

package com.zjy.sword2offer;public class Fibonacci_Recursively {public static int fibonacci_Recurve(int n){if(n<=0)return 0;if(n==1)return 1;return fibonacci_Recurve(n-1) + fibonacci_Recurve(n-2);}public static void main(String[] args) {// TODO Auto-generated method stublong start = System.currentTimeMillis();int res = fibonacci_Recurve(30);long end = System.currentTimeMillis();System.out.println(res + "花费时间" + (end-start));}}

但是计算了一下时间,发现效率非常低下,因此使用了循环的方法,通过保存上一次计算的结果来实现

package com.zjy.sword2offer;public class Fibonacci {public static int fibonacci(int n){int first = 0;int second = 1;if(n<=0)return first;if(n==1)return second;int sum = 0;while(n>1){sum = first + second;first = second;second = sum;n--;}return sum;}public static void main(String[] args) {// TODO Auto-generated method stublong start = System.currentTimeMillis();long res = fibonacci(40);long end = System.currentTimeMillis();System.out.println(res + "花费时间" + (end-start));}}


0 0
原创粉丝点击