例15:求Fibonacci數列的前40個數。這個數列有以下特點:第1,2兩個數為1,1,。從第三個數開始,該數是其前兩個數之和。(斐波那契不死神兔)
解題思路:從前兩個月的兔子數可以推出第3個月的兔子數。設第1個月的兔子數f1=1,第2個月的兔子數為f2=1,第3個月的兔子數f3=f1+f2=2。
源代碼演示:
#include<stdio.h>//頭文件 int main()//主函數,程序的入口 { int i,f1,f2,f3,row; //定義變量 f1=1,f2=1; //變量初始化 printf("輸入需要輸出的行數:");//提示語句 scanf("%d",&row); //鍵盤輸入行數 printf("%d\n%d\n",f1,f2); //先輸出第一行和第二行 for(i=1;i<row-1;i++) ///循環控制后row-2行 { f3=f2+f1; //第3行的值是前面兩行之和 printf("%d\n",f3); f1=f2; //變量賦值 f2=f3; } }
編譯運行結果如下:
輸入需要輸出的行數:30 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 -------------------------------- Process exited after 2.806 seconds with return value 29 請按任意鍵繼續. . .
讀者應該注意此程序只是簡單的輸出前30行,數字還是比較小的,如果想要更多的輸出,要用long int(長整型)定義,要不然回超出int的范圍,出現下面所示:
輸入需要輸出的行數:600 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 ……………… -1831132203 1787838701 -43293502 1744545199 1701251697 -849170400 -------------------------------- Process exited after 2.706 seconds with return value 599 請按任意鍵繼續. . .
