Fibonacci数列构建与时间空间复杂度分析

来源:互联网 发布:股票分时线数据接口 编辑:程序博客网 时间:2024/06/06 12:30
问题描述:构建Fibonacci数列。分别用递推、递归、数组构建Fibonacci序列的若干项,分别从时间、空间的复杂度角度对三种方法进行比较,并测试三种方法程序运行的时间
作者:何知令

完成时间:2017年4月22日

代码:

/*问题描述:构建Fibonacci数列。分别用递推、递归、数组构建Fibonacci序列的若干项,分别从时间、空间的复杂度角度对三种方法进行比较,并测试三种方法程序运行的时间作者:何知令完成时间:2017年4月22日*/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <windows.h>#define N 50long recursion()//递推{    int a=1,b=1;    int i;    long sum=0;    for(i=0;i<N-2;i++)    {        sum=a+b;        a=b;        b=sum;    }    return sum;}long recurrence(int n)//递归{    if(n==1||n==2)        return 1;    else        return recurrence(n-1)+recurrence(n-2);}long arry(){    int i;    long s[N];    s[0]=1;    s[1]=1;    for(i=2;i<N;i++)    {        s[i]=s[i-2]+s[i-1];    }    return s[i-1];}int main(){    int s[N];    long result_recursion;    long result_recurrence;    long result_arry;    clock_t start;    clock_t end;    start = clock();    result_recursion = recursion();    end = clock();    printf("递推终解: %ld 空间复杂度为:4(设置4个变量)\n耗时: %fseconds",result_recursion,(float)(end-start)/CLOCKS_PER_SEC);    printf("\n-----------------------\n");    start = clock();    result_recurrence = recurrence(N);    end = clock();    printf("递归终解: %ld 空间复杂度为:%d\n耗时: %fseconds",result_recurrence,N,(float)(end-start)/CLOCKS_PER_SEC);    printf("\n-----------------------\n");    start = clock();    result_arry = arry(s);    end = clock();    printf("数组终解: %ld 空间复杂度为:%d\n耗时: %fseconds",result_arry,N+4,(float)(end-start)/CLOCKS_PER_SEC);    printf("\n-----------------------\n");    return 0;}
程序运行结果展示:


知识点总结:时间函数,递归

学习心得:精确到微秒的不会,所以结果是0.00000000000秒

0 0
原创粉丝点击