list – 在Lisp中存储多变量多项式的最佳方法

我需要在我的lisp程序中存储多项式以进行加法,减法和乘法.但找不到一种简单的存储方式.

我考虑过以下方式

(2x ^ 3 2x 4y ^ 3 – 2z)列表中的列表,其中每个列表是每个电量的列表

=((0 2 0 2)(0 0 0 4)(0 2))

但每个列表的不确定长度和潜在长度可能会成为一个问题.

是否有一种普遍接受的方法将它们存储在lisp中,这可以使它们尽可能容易地添加,减去它们并将它们相乘?

最佳答案 假设您事先知道可能的变量数量,您可以像这样表达每个术语:(常数x-指数y-指数z-指数…).那么5xy ^ 2将是(5 1 2 0),并且完整表达式将仅仅是那些术语的列表.

如果你想能够处理任意数量的任意变量,你需要沿((常数5)(a 0)(b 3)(z 23)(苹果13))的行做一个关联列表.

无论哪种方式,如果你从单个术语开始,很容易构建更复杂的表达式,这样你就不需要混淆多个维度.

点赞