霍纳规则用于计算以下多项式的值,并使乘法的次数最少:
现在给定a0, a1, ... ,an的值以及x的值,计算P(x)。
double polynomial(vector <double> a, double x)
{
double y=0;
for(int i=a.size()-1;i>=0;i--) y=a[i]+x*y;
return y;
}
#include <stdio.h>
#include <stdlib.h>
//计算:a[0]+a[1]*x+a[2]*x^2=a[0]+x(a[1]+x*a[2])
double polynomial(int* a, double x,int n);
int main()
{
int a[3]={1,2,3};//数组表示多项式的系数
int x=2;//多项式的自变量值
int result=0;//存放结果
result = polynomial(a,2,3);
printf("%d\n",result);
return 0;
}
double polynomial(int a[], double x,int n)
{
double y=0;
for(int i=n-1;i>=0;i--) y=a[i]+x*y;
return y;
}
#include <stdlib.h>
//计算:a[0]+a[1]*x+a[2]*x^2=a[0]+x(a[1]+x*a[2])
double polynomial(int* a, double x,int n);
int main()
{
int a[3]={1,2,3};//数组表示多项式的系数
int x=2;//多项式的自变量值
int result=0;//存放结果
result = polynomial(a,2,3);
printf("%d\n",result);
return 0;
}
double polynomial(int a[], double x,int n)
{
double y=0;
for(int i=n-1;i>=0;i--) y=a[i]+x*y;
return y;
}
#include <stdlib.h>
//计算:a[0]+a[1]*x+a[2]*x^2=a[0]+x(a[1]+x*a[2])
#define LEN 3
int hornor(int [],int,int);
int main()
{
int a[3]={1,2,3};//数组表示多项式的系数
int x=2;//多项式的自变量值
int result=0;//存放结果
result = hornor(a,0,2);
printf("%d\n",result);
exit(0);
}
int hornor(int list[],int n,int x)
//利用递归实现霍纳规则
{
if(n == LEN-1)
{
return list[LEN-1];//递归出口
}
else
{
return hornor(list,n+1,x)*x+list[n];//递归过程
}
}
运行结果17
本文介绍了一种高效计算多项式的算法——霍纳规则,并提供了两种实现方式:迭代和递归。通过实例演示了如何使用该算法减少计算次数。
1400

被折叠的 条评论
为什么被折叠?



