【Java】求100以内的斐波那契数列

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........

这个数列从第3项开始,每一项都等于前两项之和。

来历

斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对
两个月后,生下一对小兔对数共有两对
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对
------
依次类推可以列出下表:
经过月数
1
2
3
4
5
6
7
8
9
10
11
12
幼仔对数
1
0
1
1
2
3
5
8
13
21
34
55
成兔对数
0
1
1
2
3
5
8
13
21
34
55
89
 
总体对数
1
1
2
3
5
8
13
21
34
55
89
144
 
幼仔对数=前月成兔对数
成兔对数=前月成兔对数+前月幼仔对数
总体对数=本月成兔对数+本月幼仔对数
可以看出幼仔对数、成兔对数、总体对数都构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。

递推公式

斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2)
显然这是一个线性递推数列。

代码

/**生成100以内的斐波那契数列 */
public class Test
{
public static void main(String[] args)
{
   System.out.println("斐波那契数列:");
   /**采用for循环,声明3个变量:
   i---当月🐇数
   j---上月🐇数
   m--中间变量,用来记录本月的🐇数
    */
   for(int i=1,j=0,m=0;i<100;)
   {
      m=i;//记录本月🐇数
      System.out.println(" "+i);//输出本月🐇数
      i=i+j;//计算下月🐇数 
      j=m;//记录本月🐇数
   }
}
}

结果

 

 

posted @ 2020-07-22 14:13  木子欢儿  阅读(1008)  评论(0编辑  收藏  举报