A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

斐波那契数列指的是这样一个数列  1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368。
简单地说就是从第三项开始每项的值等于前两项值的和,这样的数列叫做斐波那契数列;关于这个问题。常被我们当作递归来对待,其实它的高效解法是递推,不过这两种方式都可以做,差别在于算法的复杂度。这个稍后我会写帖子详说;
下面我给出两个方法的代码,mother1是递归的解法,mother2是递推的解法。


[Java] 纯文本查看 复制代码
/**
 * @author Dadou
 * Fibonacci数列的递归解法
 */
package cn.dadoubk.Fibonacci;

public class mother1 {
	public static void main(String[] args) {
		int n = 10;// 求第n项Fibonacci数值
		System.out.println(Fibonacci(n));
	}

	private static int Fibonacci(int n) {
		if (n <= 2)
			return 1;
		return Fibonacci(n - 1) + Fibonacci(n - 2);
	}
}


[Java] 纯文本查看 复制代码
/**
 * @author Dadou
 * Fibonacci数列的递推解法
 */
package cn.dadoubk.Fibonacci;

public class mother2 {
	public static void main(String[] args) {
		int n = 10;// 求第n项Fibonacci数值
		int[] f = new int[100];
		f[1] = 1;
		f[2] = 1;
		for (int i = 3; i <= n; i++)
			f[i] = f[i - 1] + f[i - 2];
		System.out.println(f[n]);
	}
}


简单说下递归和递推两种算法思想;
递归:大问题转化成小问题
递推:小状态推出大状态

1 个回复

倒序浏览
x55555lg 来自手机 中级黑马 2016-8-18 22:12:01
沙发
支持一个,顶一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马