我需要在我的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))的行做一个关联列表.
无论哪种方式,如果你从单个术语开始,很容易构建更复杂的表达式,这样你就不需要混淆多个维度.