阅读 130
斐波那契数列(java实现)

斐波那契数列(java实现)

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

分析:根据题目可以得出的是(以对考虑问题 不要把它换算为只) 1月:1对 1月:1对 2月:1对 3月:2对 4月:3对 5月:5对 6月:8对

可以得出的规律是:第n月的兔子是由:前2个月对数*2+前一个月增加的数,    那么也可以简单算法就是: 第n个月的兔子数是:前一个月和前两个月的和 第一种方法就是使用暴力破解(有时暴力破解也不失为一种方法)

public class title01 {
	public static void main(String[] args) {
		int sum[] = new int[12];
		for(int i =1 ;i <= 12; i++){
			if(i == 1 || i==2){
				sum[i-1] = 1;
			}else{
				sum[i - 1] = sum[i-2]+sum[i-3];
				}
		}
		for(int i = 0; i<12 ; i++){
			System.out.println( i+1+ "月:  " + sum[i] + " 对");
		}
	}
复制代码

image.png

第二种方法 是使用递归算法

public class title01_1 {
public static int sum(int n){
	if(n >= 13){
		return 0;
	}
	if(n == 1 || n == 2){
		return 1;
	}else{
		return sum(n-1) + sum(n-2);
	}
}
public static void main(String[] args) {
	for(int i = 1; i<= 12; i++){
		System.out.println(i + "月:" + sum(i) + "对");
	}
}
}
复制代码

image.png

其实上面这个问题就是斐波那契数列的一个使用(斐波那契数列就是0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610的这样一个数列,第0项是0,第1项是第一个1,数列从第三项开始,每一项都等于前两项之和)他的实现也就从上面将不死兔那个例子中看出 他的实现可以看到使用递归就能一目了然他的思想。当然他的实现方式有很多 而递归应该是相对比较好实现好理解的一个方法

文章分类
后端
文章标签