首页 > 代码库 > 用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次,效率及其低
第二种的优化算法是
利用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; } }
用HashMap优化斐波那契数列 java算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。