/*- ========================================================== * 文件名 :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);} } }