java实现斐波那序列

题目描述:

(Fib.java)斐波那契数列(Fibonacci sequence):第0项是0,第1项是1,从第2项开始,每一项都等于前两项之和,结果是0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,...。

(1)用while语句计算该数列前40个数,并把它们存放在整数(int)数组fibs中。 40用常量COUNT表示。

(2)把上面得到的数列的前后两项的比值用for语句计算出来(前两项为0和1),并存放在另一个double类型的数组nums中。注意:整数除以整数会得到整数。

(3)最后用foreach语句(见【预备知识】)把上一步的结果显示出来。

     *采用System.out.println()方法进行显示。

     观察:结果应该会逐渐接近黄金分割比例(0.618)。

    第三步完成后的运行截屏:



源代码:

public class Fib
{
   public static void main(String args[])
   {
	int fibs[]=new int[40];
	double nums[]=new double[40];
	int a = 0;
	int b = 1;
	int c = 0;
	int i = 1;
	while(i <= 37)
	{
		c = a + b;
		fibs[i-1] = c;
		a = b;
		b = c;
		i++;
	}
	final int COUNT = c;
	fibs[i] = b + COUNT;
	for(i=1; i<=36; i++)
	{
		//System.out.println(fibs[i-1]);
		//System.out.println(fibs[i]);
//因为整数除以整数会得到整数,
//所以如果这里不先设好两个double类型的变量存储int数,
//除出来始终为0
		double aa = fibs[i-1],bb = fibs[i];
		nums[i] = aa / bb;
	}
	for(double num:nums)
	{
		System.out.println(num);
	}
    }
}

         其实斐波那序列的代码核心思想在于定义两个变量(这里是a和b),用一个循环不断求其和,同时往前更新a和b的值。同时这题还有另外一个知识点,就是两个整数相除(小的数除以大的数会得到0)如何得到小数,方法是先将这两个int类型的数转换成double类型的数,然后再除。

原文地址:https://www.cnblogs.com/lvlang/p/10586512.html