居然距离上次更新博客有两年时间,说明这段时间我真的是非常非常忙,且没有什么新的知识学到?忙是真的,但是两年来学到很多很多东西,但多数都是软件工程方面或者其他的而不是开发技术上的,希望以后能有更多时间来更新自己的技术博客。
这也是我做软件民工多年来难得一次机会去考虑一个算法的实现,最后由于能力不济改为改写别人写好的代码,原文请见:http://vvggsky.iteye.com/blog/290540。但是仍然很有帮助,所以把整个代码(HTML/JavaScript)贴上来,也许会对其他童鞋也有帮助。
由于不是科班出身,以前我并不知道有这么一个后置算法(Postfix Notation),自己摸索着按照简单计算器的思路先做了一个,但是做到后面发现解析复杂表达式比如ABC/A*(C + X) + CDE*F 这种就捉襟见肘,最后完全败下阵来,打掉重做。
在解析这种表达式的时候有这样一个固定算法来解决,才会保证任意复杂度的表达式都可以得到预想的结果,它甚至支持sqrt(AB*C)/F这样的含有函数的表达式。
思路(好像这个东西让我来说有点班门弄斧,各位看官见谅:P):
1. 这个算法的核心就是把中置表达式(运算符处于运算子中间)转移到后面,与此同时,根据操作符的优先级将运算符和运算子按照一定顺序压入一个栈。这样做的好处之一就是让括号失效,而使得注意力集中在操作顺序上(计算顺序是解析表达式的关键)。
2. 真正的计算,因为在前面的后缀转换过程中,已经将运算符和运算子按照操作顺序压入栈,计算时仅仅需要将栈内元素按照顺序弹出,遇到运算子压入另外一个栈stack2,遇到运算子则将stack2栈顶两个运算子拿出来与这个运算符做计算即可。
3. 对于函数,需要一些特定的处理,因为函数是接受不同长度的参数,比如sqrt(x), pow(x,y),我并没有想出一个通用解析方法,在处理函数的时候是对函数名最为一个特殊的操作符(留意','的处理),由于后置算法的健壮度,这种函数得到了良好的支持,扩展性也比较好
4. 定义操作符优先级比较重要:+/- 为1,*// 为2,函数则为3最高,括号比较特殊为0,因为要将括号作为计算边界
对于具体思路,参考http://www.google.com.sg/url?sa=t&source=web&cd=1&ved=0CBcQFjAA&url=http%3A%2F%2Fwww.eel.tsint.edu.tw%2Fteacher%2Fthjean%2Fmultimedia%2Fc12.ppt&ei=GC3OTe0Cy8utB8TTzcIK&usg=AFQjCNG3WfJcyFAJgPyUzkzuVYgPzol1-Q&sig2=-HQ6M1QxfNAP71TcuSlqVQ,是一个台湾人写的算法PPT,提供具体的算法解释甚至包括插图解说,实属入门新手利器,推荐。
为方便起见,我选择JavaScript/HTML来制作这个小实现,包含算法实现、测试和一定的介绍(英文)你可以直接下载运行,因为时间比较仓促,还有很多地方可以改善

- 大小: 38.6 KB
分享到:
相关推荐
这就是所谓的逆波兰表示法(Postfix Notation)或堆栈算法。 此外,异常处理也是计算器代码中不可或缺的部分。考虑如何处理除以零、非法输入等错误情况,确保程序的健壮性。 对于【压缩包子文件的文件名称列表】中...
5. **表达式解析**:如果计算器支持中缀表达式(如1+2*3),则需要实现表达式解析算法,如波兰表示法(prefix notation)或逆波兰表示法(postfix notation)。 6. **图形用户界面(GUI)**:如果计算器是图形化的...
在计算机科学中,算术表达式求值是一个基础但至关重要的任务,它涉及到解析、处理和计算数学表达式。这个过程通常分为两个主要步骤:解析(parsing)和求值(evaluation)。以下将详细讲解这两个步骤以及相关技术。 ...
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
kolesar_3cd_01_0716
latchman_01_0108
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
pimpinella_3cd_01_0716
petrilla_01_0308
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
内容概要:本文档由张卓老师讲解,重点探讨DeepSeek的技术革新及强化学习对未来AI发展的重要性。文章回顾了AI的历史与发展阶段,详细解析Transformer架构在AI上半场所起到的作用,深入介绍了MoE混合专家以及MLA低秩注意机制等技术特点如何帮助DeepSeek在AI中场建立优势,并探讨了当前强化学习的挑战和边界。文档不仅提及AlphaGo和小游戏等成功案例来说明强化学习的强大力量,还提出了关于未来人工通用智能(AGI)的展望,特别是如何利用强化学习提升现有LLMs的能力和性能。 适用人群:本资料适宜对深度学习感兴趣的研究人员、开发者以及想要深入了解人工智能最新进展的专业人士。 使用场景及目标:通过了解最新的AI技术和前沿概念,在实际工作中能够运用更先进的工具和技术解决问题。同时为那些寻求职业转型或者学术深造的人提供了宝贵的参考。 其他说明:文中提到了许多具体的例子和技术细节,如DeepSeek的技术特色、RL的理论背景等等,有助于加深读者对于现代AI系统的理解和认识。
有师傅小程序开源版v2.4.14 新增报价短信奉告 优化部分细节
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
商城二级三级分销系统(小程序+后台含源码).zip
li_3ck_01b_0918
nicholl_3cd_01_0516
媒体关注度是一个衡量公众对某个事件、话题或个体关注程度的重要指标。它主要反映了新闻媒体、社交媒体、博客等对于某一事件、话题或个体的报道和讨论程度。 媒体监督的J-F系数(Janis-Fadner系数)是一种用于测量媒体关注度的指标,特别是用于评估媒体对企业、事件或话题的监督力度。J-F系数基于媒体报道的正面和负面内容来计算,从而为公众、研究者或企业提供一个量化工具,以了解媒体对其关注的方向和强度。 本数据含原始数据、参考文献、代码do文件、最终结果。参考文献中JF系数计算公式。 指标 代码、年份、标题出现该公司的新闻总数、内容出现该公司的新闻总数、正面新闻数全部、中性新闻数全部、负面新闻数全部、正面新闻数原创、中性新闻数原创、负面新闻数原创,媒体监督JF系数。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!