用HashMap优化斐波那契数列 java算法
2014-12-02 16:54
274 查看
斐波那契是第一项为0,第二项为1,以后每一项是前面两项的和的数列。
源码:Fibonacci.java
public class Fibonacci{ private static int times=0; public static void main(String args[]){ int nums = fibonacci(30); System.out.println("结果:"+nums); System.out.println("次数:"+times); } static int fibonacci(int n){ times++; if(n<=1) return 1; return fibonacci(n-1)+fibonacci(n-2); } }
求第三十项的时候。调用了函数2692539次,效率及其低
第二种的优化算法是
利用hashmap记录下每次运算的值,动态规划地输出每次的结果。
第三十项仅仅调用59次。
源码:Hash.java
import java.util.HashMap; public class Hash{ public static void main(String args[]) { HashMap m = new HashMap(); int res = Fib(30, m); System.out.println("结果:"+res); System.out.println("次数:"+times); } private static int times = 0; public static int Fib(int x,HashMap m) { times++; if (m.containsKey(x)) return (Integer) m.get(x); else if (x==0 || x==1) return 1; int temp=Fib(x-1,m)+(Fib(x-2),m); m.put(x,temp); return temp; } }
相关文章推荐
- Java算法斐波那契数列优化(fibonacci)
- 斐波那契数列 优化矩阵求法实例
- Android应用性能优化之使用SparseArray替代HashMap
- 高性能场景下,HashMap的优化使用建议
- 斐波那契数列的递归优化实现
- java算法-优化360开机时间服务端写法
- 斐波那契数列的优化问题 青蛙跳台阶问题
- Android应用性能优化之使用SparseArray替代HashMap
- 【Android性能优化】(一)使用SparseIntArray替换HashMap
- Android应用性能优化之使用SparseArray替代HashMap
- Android应用性能优化之使用SparseArray替代HashMap
- Android应用性能优化之使用SparseArray替代HashMap
- Android应用性能优化之使用SparseArray替代HashMap
- Android应用性能优化之使用SparseArray替代HashMap
- Android应用性能优化之使用SparseArray替代HashMap
- 性能优化:使用SparseArray代替HashMap<Integer,Object>
- 剖析Java中HashMap数据结构的源码及其性能优化
- Android应用性能优化之使用SparseArray替代HashMap
- 矩阵快速幂优化递推式 例:斐波那契数列 poj 3070
- 内部元素一一对应的集合的算法优化,从list到hashmap