首页 > 其他 > 详细

博客测试

时间:2020-03-18 22:47:59      阅读:49      评论:0      收藏:0      [点我收藏+]

 我使用的方法简介:

1.预备知识

dfs深度优先的搜索

2.为什么要选择这个方法

1.设计简单:不会涉及到对象之间复杂的交互,而交互就容易带来问题

2.非常可靠:这是一种广泛使用的语法分析方法,可以相信它的拓展能力

3.先举一个例子

 qwe

```x * x+x * x```求导

 

3.1向下求导

先从后向前找到第一个`+`

分解为`x * x`与`x * x`

左式从后向前找到第一个*分解为$x$与$x$

右式从后向前找到第一个*分解为$x$与$x$

左式的左边执行求导发现是基本项$x$求导为$1$

同理左式的右边,右式的左边,右式的右边也被求导

3.2向上合并

左式乘法合并就是$$ x * 1 + 1 * x $$

右式乘法合并就是$$ x * 1 + 1 * x $$

整个式子合并就是左式加右式

4.面向对象的设计几个要点:

1.整个函数叫parse的话。分解出左式右式后执行 parse(左式) prase(右式) 并根据中间的符号合并

2.我们能执行到找乘法的for的已经先把所有的加减法都去除了,能执行到找乘法的$ for $之后的已经先把所有的乘除法都去除了,还能执行的只有基本情况了比如 $ 1 $ , $ x $ , $ sin(x) $ 这种。

 ** (但我实现上先判断的基本情况,可以减少之后特判的压力) ** 

3.这其中显然合并的过程需要维护项才能进行高效合并,这怎么设计,需要什么对象,对象要有什么属相,什么方法,当然有能力的同学也可建起表达式树然后启发式搜索合并,但一般简化处理即可

4.分解的过程面向对象的设计,需要将找+,找*的过程写成addFinder等。之后基本情况的处理也可以分开成各各专家。

 

Main 5.444444444444445 49.0
ParsePare 1.9166666666666667 23.0
StringHelper 2.3076923076923075 30.0
Term 2.935483870967742 91.0
Tester 3.6666666666666665 11.0
Total   204.0
Average 3.0 40.8

博客测试

原文:https://www.cnblogs.com/woafrnraetns/p/12520429.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!