You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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;
}

逻辑说明

  1. 终止条件:当n < 0时,说明所有项都计算完毕,返回0作为累加的基础值。
  2. 递归过程:每次调用函数时,先输入当前x^n的系数,计算该项的值,再递归调用自身处理n-1次多项式,最终把所有项的结果累加起来。
  3. 输入顺序:和你原循环的输入顺序相反——递归是从最高次项(xorder)开始输入,直到x0,这点需要注意。

内容的提问来源于stack exchange,提问作者YAHIR JOSUE OSTOS JIMENEZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:37:16