斐波那契数列的非递归实现(Java)

来源:互联网 发布:淘宝申请部分退款 编辑:程序博客网 时间:2024/05/16 10:25

package chapter_4;public class Fibonacci {int i = 1;int j = 1;public void fibonacci(int n) {int time = 0;//初始化计数器int a = 0;//初始化中间变量int c[] =new int[n];//记录数列所有值c[0] = 1;c[1] = 1;if (n > 2) {time = 3;//第三项while (time < n + 1) {a = i + j;j = i;//保存F(n-2)i = a;//保存F(n-1)c[time-1] = a;time++;}}for(int k=0;k<=c.length-1;k++){   System.out.println("第"+(k+1)+"个数"+c[k]);}}public static void main(String[] args) {Fibonacci f = new Fibonacci();f.fibonacci(6);}}

 将近半年没写代码,手都生了,于是决定重新看一遍Java编程思想这本书。

 p75页的练习9就是写一个程序输出斐波那契数列的前五位。

斐波那契数列的前五项是1,1,2,3,5。.其中第三项是前两项的和。既F(n)=F(n-2)+F(n-1)

很明显,前两项是无法通过动态变量实现的,只能静态定义,于是我设置了两个变量i,j,初始值都为1,

然后新建了一个数组c 在c[0],c[1]保存这两个变量,c的作用是记录斐波那契数列的所有值。

当n等于3的时候,就可以动态计算了。我决定用while循环来写。我设置了中间变量a记录项数为n的时候斐波那契数列的值,并设置了计数器time

n等3时,a=1+1=2.所以a=i+j。当n=4时。a=1+2,所以我令i=a,j=i。i记录F(n-1)的值,j记录F(n-2)的值。具体代码为package chapter_4;