E-斐波那契数

来源:互联网 发布:mac截图后文件在哪里 编辑:程序博客网 时间:2024/06/11 21:45

1

#include<stdio.h>long long int abc[100]= {0,1,2,3,5};int sum=0,pos=4;//No.1long long int fun();long long int fun(int n){    sum++;    long long int x=0,y=0;    int k;    if (n<=pos) return abc[n];    else    {        abc[n]=fun(n-1)+fun(n-2);        return abc[n];    }}int main(){    int a,i,j;    int n;    scanf("%d",&a);    while(a--)    {        scanf("%d",&n);        printf("times=%d;fun(n)=%lld\n",sum,fun(n));    }}

2

#include<stdio.h>int sum=0;    long long int fun();long long int fun(int n){// F(2n+1)=F(n+1)*F(n+1)+F(n)*F(n)// F(2n)=F(n+1)*F(n)+F(n)*F(n-1)=F(n+1)*F(n)+F(n)*(F(n+1)-F(n))    sum++;    long long int x=0,y=0;    int k;    if(n==1||n==2) return 1;    else if(n==3) return 2;    else if(n==4) return 3;    else {        k=n/2;y=fun(k);        x=fun(k+1);        printf("k==%d,x==%lld,y===%lld\n",k,x,y);        if(n%2!=0) return x*x + y*y;        else return (2*x-y)*y;    }}int main(){    int a;    int n;    scanf("%d",&a);    while(a--){    scanf("%d",&n);    printf("times=%d;fun(n)=%lld\n",sum,fun(n));    }}

3

#include<stdio.h>int main(){    int i,j,a,n;    long long int f1=1,f2=1,t;    while(a--)    {        f1=1;        f2=1;        scanf("%d",&n);        for(i=3; i<=n; i++)        {            t=f2+f1;            f1=f2;            f2=t;        }        printf("fun(n)=%lld\n",f2);    }}
1 0
原创粉丝点击