递归计算多项式的值

递归计算多项式的值
一个多项式可以拆分成许多一次多项式的嵌套相乘。
y = 1 + x + x^2 = 1 + (1 + x) * x
学过数学基本都会,这里就是利用递归来计算每一个嵌套的一次多项式的
值,从外到里递归,从里到到外计算输出结果

#include <stdio.h>
#include <stdlib.h>
#define OVERFLOW -1
#define N 10//数组容量
double Polynomail(int a[], int i, double x, int n)
{//本算法计算多项式的值, a[]代表多项式的每一项的系数
//i代表多项式的阶次, x代表每一项的幂, n代表多项式的项数
    if (i > 0)
    {
        return a[n - i] + Polynomail(a, i - 1, x, n) * x;//拆分原理
    }
    else
    {
        return a[n];
    }
}


int main(void)
{
    double x;
    int n;//多项式的阶次
    int i;
    int a[N];
    printf("输入变量x的值:");
    scanf("%lf", &x);
    printf("输入多项式的阶次:");
    scanf("%d", &n);
    if (n > N - 1)
    {
        exit(OVERFLOW);
    }
    printf("输入多项式的系数a[0] -- a[n]:");
    for (i = 0; i <= n; i++)
    {
        scanf("%d", &a[i]);
    }
    printf("P(n) = %lf\n", Polynomail(a, n, x, n)); 
    system("pause");
    return 0;
}

你可能感兴趣的:(递归,C语言,高次多项式的计算)