《JAVA程序设计基础》实验四 Fibonacci数列

/*- ==========================================================
*     文件名  :YPR_Fibonacci.java
*     开发人员:袁培荣 CK0904班 学号:U200911171
*     当前版本:1.0.0.2595
*     建立时间:2012-03-09
*     修改时间:2012-03-09
*     功能说明:《JAVA程序设计基础》实验四 Fibonacci数列
*     版权说明:版权全部 袁培荣 YuanPeirong 
*     编译环境:Windows 7(x64) SP1 简体中文专业版
*     JDK版本: JDK 7U3-B05(Windows-x64)
- ==========================================================*/
/*- ==========================================================
Fibonacci数列
 F(1)=1,
 F(2)=1,
 …
 F(n)=F(n-1)+F(n-2)  (n>=3)
- ==========================================================*/ 
import java.io.*;
public class YPR_Fibonacci {
    public static void main(String args [ ]) {
    System.out.println("这是一个Fibonacci数列的演示程序");
    System.out.println("下面输出的是数列的前20项:");
    System.out.println("n    F(n)");
    //m_PrintFibonacci(20);
    m_PrintFibonacciBetter(20);
    }
    //用递归法求Fibonacci数列第n项
    public static int m_Fibonacci(int n) {
        int iFibonacci;
        if(n<1) {
            iFibonacci=-1;
            System.out.println("参数错误,必须是大于0的整数!");
        }
        else if(n==1 | n==2)
            {iFibonacci=1;}
        else
            {iFibonacci=m_Fibonacci(n-1)+m_Fibonacci(n-2);}
        return iFibonacci;
    }
    //求Fibonacci数列第n项 算法优化
    public static int m_FibonacciBetter(int n) {
        int iFibonacci=0,iTemp1=1,iTemp2=1;
        if(n<1) {
            iFibonacci=-1;
            System.out.println("参数错误,必须是大于0的整数!");
        }
        else if(n==1 | n==2)
            {iFibonacci=1;}
        else {
            for(int i=3;i<=n;i++) {
                iFibonacci=iTemp1+iTemp2;
                iTemp1=iTemp2;
                iTemp2=iFibonacci;
            }
        }
        return iFibonacci;
    }
    //打印Fibonacci数列前n项
    public static void m_PrintFibonacci(int n) {
        if (n>0) {
            for(int i=1;i<=n;i++) {
                //int j=m_Fibonacci(i);
                int j=m_FibonacciBetter(i);
                if (i<10)
                    {System.out.println(i+" "+"    "+j);}
                else
                    {System.out.println(i+"    "+j);}
            }
        }
        else
            {m_Fibonacci(n);}
    }
    //打印Fibonacci数列前n项 算法优化
    public static void m_PrintFibonacciBetter(int n) {
        if (n>0) {
            int j=0,iTemp1=1,iTemp2=1;
            for(int i=1;i<=n;i++) {
                if(i==1 | i==2)
                    {j=1;}
                else {
                    j=iTemp1+iTemp2;
                    iTemp1=iTemp2;
                    iTemp2=j;
                }
                if (i<10)
                    {System.out.println(i+" "+"    "+j);}
                else
                    {System.out.println(i+"    "+j);}
            }
        }
        else
            {m_Fibonacci(n);}
    }
}
相关文章
相关标签/搜索