斐波那契数列(Fibonacci sequence),又称黄金分割数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)


有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第四个月

后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输 出 24 个月内,每个月的兔子总数为多少)  


package program;

import java.util.Scanner;

public class Pro11 {

	 public static void main(String[] args) {
	        long s1 = 1;
	        long s2 = 1;
	        int count;
	        long temp;
	        Scanner in = new Scanner(System.in);
	        count = in.nextInt();
	        for (int i = 1; i <= count; i++) {
	            if (i == 1) {
	                System.out.println("第" + i + "个月的兔子对数:" + s1);
	                continue;
	            } else if (i == 2) {
	                System.out.println("第" + i + "个月的兔子对数:" + s2);
	                continue;
	            } else {
	                temp = s2;
	                s2 = s1 + s2;
	                s1 = temp;
	                System.out.println("第" + i + "个月的兔子对数:" + s2);
	            }
	        }
	    }

}

解:正确的算法如下图所示(建议最好画下来):其中最左边的数表示月份,白色的圈表示未成熟的兔子,黑色的圆表示已经成熟,可以生育的兔子。

其中我们可以发现,每月已经成熟的兔子数量等于上个月的兔子数量,这是因为一对兔子过了一个月就会成熟,而已经成熟的兔子过了一个月还是成熟的。这样,因为每一对成熟的兔子在下一个月都会生出一对兔子,所以每月兔子增加的数量就是两个月前兔子的数量,这样把每个月兔子的数量排成一个数列,正好是著名的“斐波那契数列”。

猜你喜欢

转载自blog.csdn.net/Andrelia20171760/article/details/82956970