Linux環境C語言斐波拉切數列(1,1,2,3,5,8,13,.........)實現
阿新 • • 發佈:2018-12-10
fib %d lse printf 黃金 oda n-2 desktop tdi
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(3)=2,F(n)=F(n-1)+F(n-2)(n>=4,n∈N*).
C語言可以用以下方法實現
一 遞歸實現
1 #include <stdio.h> 2 3 int fun(int i) //遞歸函數 4 { 5int res = 0; 6 if(i>2) //從第三位開始 7 { 8 res = fun(i-1) + fun(i-2); 9 } 10 else //第一和第二 11 { 12 res = 1; 13 } 14 15 return res; 16 } 17 18 void main() 19 { 20 int n = 20; 21 for(int i=1;i<=n;i++) // 為了打印,循環調用 22 { 23 int res = fun(i);//i表示第幾位 24 printf("%d\t",res); 25 } 26 printf("\n"); 27 }
運行結果
he@he-PC:~/Desktop$ ./a.out 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 he@he-PC:~/Desktop$ ^C
二 循環實現
1 void main() 2 { 3 int a[20] = {0},i=0; 4 5 a[0] = 1; 6 a[1] = 1; 7 for( i=0;i<= sizeof(a)/sizeof(int);i++) 8 { 9 if(i<2) 10 { 11 a[i] =1; 12 } 13 else 14 { 15 a[i] = a[i-1] + a[i-2]; 16 17 } 18 printf("%d\t",a[i]); 19 } 20 21 printf("\n"); 22 23 }
運行結果
he@he-PC:~/Desktop$ ./a.out 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 he@he-PC:~/Desktop$
三 循環實現
1 #include <stdio.h> 2 3 4 void main() 5 { 6 int i = 0; 7 int tmp = 1, tmp2 = 0, sum = 0; 8 for(i=0;i<=20;i++) 9 { 10 sum = tmp + tmp2; 11 tmp = tmp2; 12 tmp2 = sum; 13 printf("%d\t",sum); 14 } 15 printf("\n"); 16 }
運行結果
he@he-PC:~/Desktop$ ./a.out 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 he@he-PC:~/Desktop$
四 循環實現
1 #include <stdio.h> 2 3 void main() 4 { 5 int a = 0, n = 20 ,b = 1; 6 7 for(int i=2;i<=n;i++) 8 { 9 b = a + b; 10 a = b-a; 11 printf("%d\t",b); 12 } 13 printf("\n"); 14 }
運行結果
he@he-PC:~/Desktop$ ./a.out 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 he@he-PC:~/Desktop$
Linux環境C語言斐波拉切數列(1,1,2,3,5,8,13,.........)實現