C语言:Fibonacci数列(非递归)

/*问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
*/
#include
#include

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;
}
这个是带循环的,一次打开可以分析多次。如果想要打开一次分析一次,把while循环去掉就可以了。

你可能感兴趣的:(C)