C語言 java 斐波那契數列
阿新 • • 發佈:2019-01-27
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、
因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,
故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……
在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
這個數列從第3項開始,每一項都等於前兩項之和。
因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,
故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……
在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
這個數列從第3項開始,每一項都等於前兩項之和。
/** feibonaci.c */ #include<stdio.h> int Fibonacci(int n) { return n < 2 ? 1 : (Fibonacci(n-1) + Fibonacci(n-2)); } int main() { int i=0; for(i=0;i<15;i++) printf("%d ",Fibonacci(i)); return 0; }
結果:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
非遞迴實現:
//斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, //144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........ // //這個數列從第3項開始,每一項都等於前兩項之和。 #include<stdio.h> void main() { int n=20;//前n項斐波那契數列數列 int first=1; int second=1; int third=0; int i; for(i=1;i<=n;i++) { if(i<=2) printf("%-6d",1); else { third=first+second; printf("%-6d",third);//第三項等於前兩項之和 first=second;//前移第一項 second=third;//前移 } if(i%10==0) printf("\n"); } }
結果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
java實現:
結果:package Ctojava; public class Feibonaci { static int feibonaci(int n) { return n<2 ? 1 : feibonaci(n-1)+feibonaci(n-2); } public static void main(String[] args) { for(int i=0;i<15;i++) { System.out.print(feibonaci(i)); if(i<14) System.out.print(","); else System.out.println("..."); } } }
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610...