标签:style blog http ar sp java on 2014 art
斐波那契是第一项为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; } }
标签:style blog http ar sp java on 2014 art
原文地址:http://www.cnblogs.com/ilsk/p/4137929.html