问题描述
我正在尝试基于int数组类型的多项式实现多项式长除法。这里最高的度数系数在最后。我的代码基于维基百科上可用的伪代码:
var sleeper = new Sleeper();
socket.on("end_sleep",function(){
sleeper.cancel(); // pass a reason if you wanted.
})
// your code
await sleeper.wait(20000);
H
解决方法
此行
q = poly_add q t
正在测试q
和poly_add q t
之间的相等性,它不是赋值,并且编译器警告您忽略此测试的结果。您还会误解您的伪代码:t
应该是次数degree r - degree d
的多项式。
您需要使用引用,或将while循环转换为递归函数。
类似地,由于r
是一个数组,其长度不能更改:
while ((Array.length r) >= n2) && (Array.length r != 0)do
此测试在循环期间不会更改。结构性不平等为<>
。
另一个问题是该行
t.(0) <- r.((Array.length r)-1)/p2.(n2-1)
正在变异零多项式,这是个坏主意。
总的来说,不清楚您的多项式是否应该可变。
如果它们不应该是可变的,则应完全避免使用a.( ) <-
。