【哲理】空间换时间

来源:互联网 发布:php中文网 编辑:程序博客网 时间:2024/04/29 22:25

时间和空间的关系,是霍金这种智商的人要研究的东西,我们只需要知道,在编程时,空间是可以换时间的,时间也是可以换空间的。

李开复在他的自传《世界因你不同》中描述了他小时候在美国学校里的一个故事,老师出了道题:“谁知道1/7等于多少?”小开复马上大声回答:”0.142857,老师和同学们都惊呼开复是个天才,其实事实情况是,开复以前在台湾时就记下了这个答案。这就是一个典型的以空间(存储)换时间的例子。

下面以打印0~40的Fibonacci序列为例,进一步说明空间换时间的概念:

Program A:用递归的方式实现(时间较长)。

int Fiboncci(int n){    if(n <= 1)    {        return 1;    }    else        return Fiboncci(n-1)+Fiboncci(n-2);}int main(){    int x = 40;    printf("The numbers is: n");    for(;x>0;x--)    printf("%d, ",Fiboncci(x));    printf("n");    return 0;}

Program B:以空间换时间

int fArry[41] = {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987,                 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393,                 196418, 317811, 514229, 832040, 1346269, 2178309,3524578,5702887,                 9227465, 14930352,24157817,39088169,63245986,102334155,165580141,                 };int Fiboncci(int n){    if(n <= 1)    {        return 1;    }    else        return fArry[n-1]+fArry[n-2];}int main(){    int x = 40;    for(;x>0;x--)    printf("%d, ",Fiboncci(x));    printf("n");    return 0;}

在商业上最成功的空间换时间的例子是Google和百度的搜索引擎算法,当我们提交一个搜索请求时,搜索引擎并不是现场给我们搜索,要在这么短的时间内搜索全球数不尽的网页是不可能的,它只是将已经搜索好的网页呈现给我们。
——引自《大话处理器》P174

这两个程序是我自己实现的哦!嘿嘿…

1 0
原创粉丝点击