题目描述:
(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类型的数,然后再除。