注册 登录
编程论坛 C++教室

考下眼力和数学

mfkblue 发布于 2009-07-27 23:24, 535 次点击
就凭眼睛看,下面两个函数调用同样的数值后返回的结果是否相等.
int poly(int co[],int n,const int &x)
{
    int y=1,value=co[0];
    for(int i=1;i<=n;i++)
    {
        y*=x;
        value+=y*co[i];
    }
    return value;
}


int horn(int co[],int n,const int &x)
{
    int value=co[n];
    for(int i=1;i<=n;i++)
        value=value*x+co[n-i];
    return value;
}
我是没看出来最结果怎么相等了,随便试了几个数据还真是一样的结果.
3 回复
#2
pangding2009-07-28 00:07
回复 楼主 mfkblue
是一样的,它们做的相当于求多项式的值,co是系数。
一个是这么算的:
a0 + a1 * x + a2 * x^2 + ……
其中的x的幂是靠y这个变量一点点递增上去的。

第二个这样:
(((an * x + a[n-1])*x + a[n-2])……)*x + a0
展开之后是一样的。
#3
ET_bug2009-07-28 09:20
还真是考数学呀,没有推导过,很难想像出他们是一样的呢..
#4
zwei_02009-07-28 17:12
很精巧啊
1