多项式的计算与 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;

}

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

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

以上.

你可能感兴趣的:(计算)