码迷,mamicode.com
首页 > 其他好文 > 详细

fibonacci数列的两种求解方式:基础递归VS动态规划

时间:2015-05-05 00:07:07      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:

/*
 * 基础解法,按照递归方法求解,该算法的运算时间是指数级增长的
 * 这种算法对于相似的子问题进行了重复的计算,因此不是一种高效的算法
 */
public class FibonacciRecursion {
	
	//-----------计算Fibonacci数列值的递归函数--------------
	public static int fib(int n){
		if(n==1||n==2){//序列中第1,2个数为1
			return 1;
		}
		return fib(n-1)+fib(n-2);
	}
	
	public static void main(String[] args) {
		int i=6;
		System.out.println("fib("+i+"):"+fib(i));
	}
}

/*
 * 可以通过保存已经算出的子问题的解来避免重复计算
 * 即使用动态规划的技术
 */
public class FibonacciDP {

	// ----------使用动态规划(DP)求fibonacci数列的值------------
	public static int fib(int n) {
		int[] array = new int[n];//用来保存动态规划过程中的状态
		array[0] = 1;
		array[1] = 1;
		for (int i = 2; i < n; i++)
			array[i] = array[i - 1] + array[i - 2];//动态规划的状态转移式
		return array[n-1];
	}

	public static void main(String[] args) {
		System.out.println("fib(6):"+fib(6));
	}
}

fibonacci数列的两种求解方式:基础递归VS动态规划

标签:

原文地址:http://blog.csdn.net/hellozpc/article/details/45487955

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!