时间:2021-04-24 09:27:44 | 栏目:C代码 | 点击:次
/* 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 */ #include<stdio.h> #include<stdlib.h> int N=10007; /*计算Fibonacci函数*/ int Fibonacci (int n) { int Fn; if (n==1 || n==2) { Fn=1; } else { Fn = (Fibonacci(n-1) + Fibonacci(n-2))%N; } return (Fn); } int main(void) { int n,tap=1,F1,F2,Fn; /*判断是否继续分析下一个数。*/ while(tap) { /*保证分析的数有效*/ do { printf("*************Fibonacci***************\n"); /*简易菜单*/ printf("Please enter a positive integer for analysis:\n"); scanf("%d",&n); }while (n<1); /*开始分析*/ Fn=Fibonacci(n); printf("%d\n",Fn); /*判断是否继续分析下一个数*/ printf("enter 1 to continue,enter 0 to quit:\n"); scanf("%d",&tap); printf("\n"); } printf("Thank You.\n"); return 0; }
采用递归的方法,一次运行多次分析,若想一次运行只分析一次,只需将while循环去掉即可。