多项式导数处理指数为0
Polynomial Derivative handling exponent of 0
我有一个方法接受多项式 Linked List
作为参数和 returns 一个新列表,它是多项式的导数。
这是我的:
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;
}
当我 运行 程序时,它从未完成编译并部分 returns 列表;只有幂高于 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
大于零。因此,当找到带有 0 power
的 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
列表。
我有一个方法接受多项式 Linked List
作为参数和 returns 一个新列表,它是多项式的导数。
这是我的:
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;
}
当我 运行 程序时,它从未完成编译并部分 returns 列表;只有幂高于 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
大于零。因此,当找到带有 0 power
的 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
列表。