#多项式求值解法:
###hello,本期我将会具体介绍多项式求值的解法,先看题目:
本题要求实现一个函数,计算阶数为n,系数为a[0] … a[n]的多项式
#大致解题思路-函数
1.将多项式的第一项arr【0】作为特殊的一项:使其成为sum的初始值
:double sum=arr【0】
2.遍历arr数组,使得每一个元素都乘以对应的x幂次方
3.返回相加求和的值
#开始具体解析
#include<stdio.h>
#define MAXN 10
int main()
{
int n = 0;
int i = 0;
double x = 0.0;
double arr[MAXN] = { 0 };
scanf("%d %lf", &n, &x);
for (i = 0; i <= n; i++)
{
scanf("%lf", &arr[i]);
}
printf("%.1lf\n", f(n, arr, x));
return 0;
}
1.我定义了整型阶数n,整型变量i,double类型的给定点,double类型的数组arr,其大小为MAXN(这里是define定义的常量MAXN,即MAXN=10)
2.for循环,向数组arr里面的每一个元素(即多项式的系数)存储一个值
3.调用f函数,传入参数:阶数n,数组arr,给定点x
####函数写法:
double f(int n, double arr[], double x)
{
double sum = arr[0];
int i = 0;
double m = 1;
for (i = 1; i <= n; i++)
{
m *= x;
sum += arr[i] * m;
}
return sum;
}
1.函数的返回类型为double,名字是f,yong int n接收阶数n,double arr【】接收数组arr,double x接收给定点x
2.定义double sum的初始值为多项式的第一项arr【0】
因为只有第一项不需要乘以对应的x的幂次方
3.遍历数组arr,得到arr【0】后面的所有数组元素
然后乘以对应的x的幂次方后相加
m*=x:注意m一定要是double类型的 初始化为m=1,因为m是自乘给定点的值,由此可以实现模拟x的幂次方效果
4.最后返回sum的值
本期完!