C语言实现Fibonacci数列递归

/*

问题描述

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循环去掉即可。

以上是 C语言实现Fibonacci数列递归 的全部内容, 来源链接: utcz.com/z/346124.html

回到顶部