您的位置:首页 > 编程语言 > Java开发

用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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: