多项式导数处理指数为0

时间:2018-04-17 01:08:38

标签: java linked-list polynomials derivative exponent

我有一个方法,它接受一个多项式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 个答案:

答案 0 :(得分:3)

仔细查看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大于零,否则不会发生变化。因此,当找到polypowerwhile (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),同时仍然在223.25.99.163</td> <td ng-bind="proxy.PORT" class="ng-binding">1180</td> 列表上循环。