C語言:Fibonacci數列(非遞迴)
阿新 • • 發佈:2019-01-30
/*問題描述
Fibonacci數列的遞推公式為:Fn=Fn-1+Fn-2,其中F1=F2=1。
當n比較大時,Fn也非常大,現在我們想知道,Fn除以10007的餘數是多少。
*/
Fibonacci數列的遞推公式為:Fn=Fn-1+Fn-2,其中F1=F2=1。
當n比較大時,Fn也非常大,現在我們想知道,Fn除以10007的餘數是多少。
*/
這個是帶迴圈的,一次開啟可以分析多次。如果想要開啟一次分析一次,把while迴圈去掉就可以了。#include<stdio.h> #include<stdlib.h> int N=10007; void Print()//輸出簡易選單 { printf("*************Fibonacci***************\n"); printf("Please enter an integer for analysis:\n"); } int main(void) { int F1,F2,n,tap=1,Fn;//tap標識是否繼續,tap=1繼續,tap=0退出。 while(tap) { Print(); scanf("%d",&n); F1=1; //初始化 F2=1; for(n=n-2;n>0;n=n-2) { F1=(F1+F2)%N; F2=(F1+F2)%N; } Fn=F1; if(n==0) //判斷輸出哪個位置上的數字 Fn=F2; printf("%d\n",Fn); printf("enter 1 to continue,enter 0 to quit:\n");//判斷是否繼續 scanf("%d",&tap); } printf("Thank You.\n"); return 0; }