我一直在努力寻找解决此问题的方法。或者也许是一种适合我所遇到问题的方法。
我们通过层次结构树中排列的类来表示数学表达式。最上面是基本的数学表达式,下面是二进制,一进制,在它们下面是所有运算符,这些运算符使一元表示:否定,cos,sin。二进制:加,减,除,战俘,对数。
除了我们有数字和变量。
表达式示例:
new Plus(new Plus(x , 5), 5) => x + 5 + 5
所有此类均使用通常与.math
相关的方法来实现接口。
前例:评估,分配,推导。由于层次结构树,该方法可以递归工作。
我还注意到这不是普通的规则二叉树。 (我说得对吗?)
一切顺利,直到我们不得不简化这些表达式为止。
x * 0 => 0的基本简化很简单。
但是我想简化关联性和分布性。
例如,给定的(2 * x + 4 * x)+ 5 + 2x将给我8x + 5。
所以我想知道如何解决这个问题。