gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:20:10 25 4
gpt4 key购买 nike

我有一个方法将多项式 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;
}

但这似乎行不通。有什么想法吗?

最佳答案

仔细观察您的 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 大于零。因此,当找到 power 为 0 的 poly 时,您的循环就会卡住。

将其更改为:

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 列表。

关于java - 多项式导数处理指数为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com