第一次用csdn,作为收集册,欢迎拍砖~~
6-2 多项式求值 (15分)
本题要求实现一个函数,计算阶数为n
,系数为a[0]
... a[n]
的多项式f(x)=∑i=0n(a[i]×xi) 在x
点的值。
乍一看很简单。
应该for循环解决n次相加,内加一个for循环求出指数运算。
double f( int n, double a[], double x )
{
int i,j;
double sum=0,x_exp;
for(i=0;i<n+1;i++){
if(i==0)
x_exp=1;
else if(i==1)
x_exp=x;
else for(j=1;j<i;j++) x_exp*=x_exp;
sum+=a[i]*x_exp;
}
return sum;
}
但是没有通过,因为内层有第二个for循环。百度后发现问题,重写后AC
double f( int n, double a[], double x )
{
int i;
double sum=0,ji=1;//总和与积
for(i=0;i<=n;i++){
if(i!=0)
ji*=x;//第1次时ji为1,后ji每次自乘一交
sum+=a[i]*ji;
}
return sum;
}