首页 > 后端开发 > Golang > 正文

防火测试:递归阶乘

PHPz
发布: 2024-08-14 10:45:05
原创
1012 人浏览过

Teste de fogo: fatorial recursivo

对于那些不关注POJ(JVM上的Pascal)的人来说,它是一个编译器,将子集从Pascal转换为JASM(Java Assembly),以便我们可以使用JVM作为执行环境

在上一篇文章中,实现了对Pascalread/readln的支持,这些函数可以从标准输入(stdin)读取数据。在本出版物中,我们将完成 POJ 的目标之一:从标准输入中读取数字并递归计算阶乘。

当我们为 JVM 进行编译时,有必要详细说明这个令人难以置信的虚拟机的各个点的功能。因此,我多次详细介绍 JVM 的内部工作原理以及它的一些指令(操作码)。

递归阶乘,锦上添花:-)

正如项目开始时提到的,目标之一是能够递归计算阶乘,从标准输入中读取要计算的数字。迄今为止 POJ 中的实现已经使这一目标成为可能:

  • Hello world:使用 ANTLR、解析器和代码生成创建项目的代码库 Java Assembly;
  • 加、减、乘、除运算符和条件句开头 - if:开始支持运算符以及初步支持条件句;
  • Repeat、while 和 for:支持重复结构;
  • Pascal 中的函数:递归函数的实现。

现在是时候验证迄今为止所开发的内容了。也就是说,来自下面的 Pascal 程序:

雷雷

POJ 正确生成以下程序集

雷雷

最后,结束

我们通过这个项目结束了这次学习之旅。

可以通过这个项目探索编译器领域的一些有趣的事情(例如生成代码的优化)。谁知道呢,也许在不久的将来我们会开始一个新的优化系列:-)

完整的项目代码

包含项目完整代码和文档的存储库在这里。

以上是防火测试:递归阶乘的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!