首页 > 代码库 > 用HashMap优化斐波那契数列 java算法

用HashMap优化斐波那契数列 java算法

斐波那契是第一项为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次,效率及其低

image

第二种的优化算法是

利用hashmap记录下每次运算的值,动态规划地输出每次的结果。

第三十项仅仅调用59次。

image

源码: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;	}	}

用HashMap优化斐波那契数列 java算法