C语言多项式计算:循环实现转递归实现求助
递归实现多项式计算
递归的核心逻辑很直接:n次多项式的和 = xⁿ的系数项 + (n-1)次多项式的和,以此类推直到0次项,当次数小于0时返回0作为终止条件。
和你用循环先存所有系数再计算的方式不同,递归可以边获取系数边累加计算,不需要额外数组存储系数。下面是具体实现:
代码实现
#include <stdio.h> #include <math.h> // 修正参数:次数n用int更合理(原问题的double是笔误) double polynomial(double x, int n) { // 递归终止:没有项可计算时返回0 if (n < 0) { return 0.0; } // 递归获取当前次数的系数 double coeff; printf("Enter coefficient of polynomial at x^%d\n", n); scanf("%lf", &coeff); // double类型要用%lf,注意和你原代码的%f区分 // 当前项的值 + 低一次多项式的和 return coeff * pow(x, n) + polynomial(x, n - 1); } int main() { double x; int order; printf("Enter value of x: "); scanf("%lf", &x); printf("Enter order of polynomial: "); scanf("%d", &order); double result = polynomial(x, order); printf("Polynomial result: %.2lf\n", result); return 0; }
逻辑说明
- 终止条件:当
n < 0时,说明所有项都计算完毕,返回0作为累加的基础值。 - 递归过程:每次调用函数时,先输入当前
x^n的系数,计算该项的值,再递归调用自身处理n-1次多项式,最终把所有项的结果累加起来。 - 输入顺序:和你原循环的输入顺序相反——递归是从最高次项(xorder)开始输入,直到x0,这点需要注意。
内容的提问来源于stack exchange,提问作者YAHIR JOSUE OSTOS JIMENEZ
相关产品推荐
相关产品推荐

