问题是:假设我有一个sin(2-cos(3*A/B)^2.5)+0.756*(C*D+3-B)
使用 BNF 指定的输入函数,我将使用递归下降算法解析输入,然后如何使用或更改 Dijkstra 的算法来处理这个给定的函数?我需要用罪来执行它 | COS | 平方 | ln,Dijkstra 的算法应该在其中完成工作。
编辑:也许我还应该问:表示给定功能的最佳实践或数据结构是什么?
编辑:输入集可以获取为:
C 0.01 .01 .02 .04 .08 .02 .02 .04
A .016 .008 .116 .124 .147 .155 .039 .023
D .012 .025 .05 .1 .1 .1 .025 .012000 .012
B .007 .007 .015 .022 .029 .036 .044 .051 .058 .066 .073 .080
编辑:Shunting Yard 是将输入函数转换为 RPN 的算法,但是如何扩展它以接受另一个函数,如 sin | COS | 平方 | 吗?递归下降是否为调车场提供了所需的扩展?