您的位置:首页 > 编程语言 > C语言/C++

Fibonacci数列的递推C语言详解:Fn=Fn-1+Fn-2

2018-01-16 11:23 309 查看

Fibonacci数列的递推C语言详解:Fn=Fn-1+Fn-2

1. 求Fn除以10007的余数

#include<stdio.h>
#define M 10007

int main()
{
int a1,a2;
a1=a2=1;
int temp; //temp作为数据交换的中介
long n; //因为n>=1 and n<=1000000
long i;
scanf("%ld",&n);

for(i=1;i<n;i++)
{
//a1 作为f(n);a2为f(n+1)
//a1+a2=f(n+2)
temp=a2;
a2=(a1+a2)%M;
a1=temp;
}
printf("%d\n",a1);
return 0;
}


2. 求第n个数 - 时间复杂度O(n)算法

#include<stdio.h>
int main()
{
int a1,a2;
a1=a2=1;
int temp; //temp作为数据交换的中介
long n; //因为n>=1 and n<=1000000
long i;
scanf("%ld",&n);

for(i=1;i<n;i++)
{
//a1 作为f(n);a2为f(n+1)
//a1+a2=f(n+2)
temp=a2;
a2=a1+a2;
a1=temp;
}
printf("%d\n",a1);
return 0;
}


3. 求第n个数 - 时间复杂度O(nlogn)算法

#include<stdio.h>
int Fibo(int n)
{
if(n==1||n==2)
return 1;
else
return Fibo(n-1)+Fibo(n-2);
}

int main()
{
int n=0;
scanf("%d",&n);
printf("%d\n",Fibo(n));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C 算法 Fibonacci数列