有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java多项式导数处理指数为0

我有一个方法,它将多项式Linked List作为参数,并返回一个新列表,它是多项式的导数

以下是我所拥有的:

private PolyNode derivative(PolyNode poly) {
    PolyNode temp = new PolyNode(0, 0);
    PolyNode res = temp;

    // While both Lists are not empty
    while (poly != null) {
        if (poly.power > 0) {
            temp.next = new PolyNode(poly.coef * poly.power, poly.power - 1);
            temp = temp.next;
            poly = poly.next;
        }
    }
    // Return new List, the result polynomial
    return res.next;
}

当我运行程序时,它从未完成编译并部分返回列表;只有幂大于0的项。 我试着加上

if (poly.power == 0) {
    temp.next = new PolyNode(0,0);
    temp = temp.next;
    poly = poly.next;
}

但这似乎不起作用。有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    仔细观察你的while循环:

    // While both Lists are not empty
    while (poly != null) {
        if (poly.power > 0) {
            temp.next = new PolyNode(poly.coef * poly.power, poly.power - 1);
            temp = temp.next;
            poly = poly.next;
        }
    }
    

    poly不会更改,除非其power大于零。因此,当找到一个0 powerpoly时,您的循环就卡住了

    将其更改为:

    while (poly != null) {
        if (poly.power > 0) {
            temp.next = new PolyNode(poly.coef * poly.power, poly.power - 1);
            temp = temp.next;
        }
        poly = poly.next;
    }
    

    这样,您可以有效地抛出任何常量(power == 0),同时仍然在poly列表上循环