java程式設計:三種方法實現斐波那契數列
題目要求:編寫程式在控制檯輸出斐波那契數列前20項,每輸出5個數換行
方法一:public class Fibonacci1{
//定義三個變數方法
public static void main(String[] args) {
int a=1, b=1, c=0;
System.out.println("斐波那契數列前20項為:");
System.out.print(a + "\t" + b + "\t");
for (int i = 1; i <= 18; i++) {
c = a + b;
a = b;
b = c;
System.out.print(c + "\t");
if ((i + 2) % 5 == 0)
System.out.println(); }}}
方法二:public class Fibonacci2{
//定義陣列方法
public static void main(String[] args) {
int arr[] = new int[20];
arr[0] = arr[1] = 1;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2]; }
System.out.println("斐波那契數列的前20項如下所示:");
for (int i = 0; i < arr.length; i++) {
if (i % 5 == 0)
System.out.println();
System.out.print(arr[i]+"\t"); }}}
方法三:public class Fibonacci3 {
//使用遞迴方法
private static int getFibo(int i) {
if (i == 1 || i == 2)
return 1;
else
return getFibo(i - 1) + getFibo(i - 2);}
public static void main(String[] args) {
System.out.println("斐波那契數列的前20項為:");
for (int j = 1; j <= 20; j++) {
System.out.print(getFibo(j) + "\t");
if (j % 5 == 0)
System.out.println();}}}
小記:初學java邊開始接觸斐波那契數列問題(1,1,2,3,5,8,13,21這樣的數列,從第三個數開始每個數等於它前面的兩個數相加),開始不太理解,後來做一道兔子相關練習的時獲得了一些思路(這道兔子題的實質就是斐波那契數列: 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?),現在從變數、陣列、遞迴三個角度出發解決這個puzzle,當然還有其它的方法,同一道題用各種不同的思路去思考解決,也是對知識綜合運用的鍛鍊吧。