如何解决OCaml中的多项式长除法
我正在尝试基于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.( ) <-
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。