我需要在我的 lisp 程序中存储多项式以进行加法、减法和乘法。但找不到一种简单的存储方法。
我考虑过以下方式
(2x^3 + 2x + 4y^3 - 2z) 在列表列表中,其中每个列表是每个幂的数量列表
= ( (0 2 0 2) (0 0 0 4) (0 2) )
但是每个列表的不确定长度和潜在长度可能会成为一个问题。
是否有一种普遍接受的方法将它们存储在 lisp 中,从而尽可能容易地将它们加、减和乘在一起?
最佳答案
假设您事先知道可能变量的数量,您可以这样表达每个项:(constant x-exponent y-exponent z-exponent ...)
。那么 5xy^2
就是 (5 1 2 0)
,一个完整的表达式就是这些项的列表。
如果您希望能够处理任意数量的任意变量,则需要按照 ((constant 5) (a 0) (b 3) (z 23) (苹果 13))
.
无论哪种方式,如果您从单个术语开始,就可以轻松构建更复杂的表达式,而且这样您就不需要弄乱多个维度。
关于list - 在 Lisp 中存储多变量多项式的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27214993/