多项式的计算与 Horner 法多项式求值

//1
double Poly(double a[], double x, int degree)
{
        long int i;
        double result = a[0];
        double xpwr = x;
        for(i = 1; i <= degree; ++i){
                redsult += a[i] * xpwr;
                xpwr = x * xpwr;
        }  
        return result;
}
//Horner's method
double Polyh(double a[], double x. int degree)
{
        long int i;
        double result = a[degree];
        for(i = degree - 1; i >= 0; --i){
                result = a[i] + x * result;
        }
    return result;
}

同样的事情, 递归做起来就是比迭代神奇. 从代码上看, 递归有着更少的加法和乘法运算, 所以从效率上说, 递归是比迭代的效率......低的.

为什么呢? 假设机器猫和火影每一集有相同的信息量, 那么必然火影播一集所需要的时间更长, 为啥呢? 因为火影每集都有冗长的前情回顾, 回忆啊回忆啊就把时间回忆掉了. 一个道理, 每次迭代都是在做做相同的动作, 只是材料不一样了; 而每次递归都要把之前的步骤再来一遍, 所以一开始迭代和递归的效率区别还不明显, 但是当执行得越来越远的时候, 机器猫都把道具亮出来了, 火影还沉浸在回忆里呢.

以上.

posted @ 2014-12-17 13:35  wu_overflow  阅读(474)  评论(0编辑  收藏  举报