函数式编程起源于数学和计算机科学,这两种科学对术语都各执一词。语言和框架设计师们开发了他们最喜欢的命名法 ,结果发现基础范式已经有名称了。由于术语存在不一致性而使得了解函数式编程范式变得不容易。
在 “大量转换 ” 中,我提出了对质数进行分类的问题,并且跨各种函数式语言就 JVM 和两种函数式 Java 框架实现了一种解决方案。本 期文章继续探讨上一期的主题,通过两种方式优化了上一期的算法,展示了各种语言中的后续更改。本期文章和上一期文章 同样阐述了各种工具和语言中术语与特性可用性之间的区别。具体来讲,我练习了这些示例中的 map、filter 和 memoize 。
使用纯 Java 语言优化的质数分类法
所陈述的问题是确定一个数是否是质数,一个质数的因子只包括 1 和它本身。在解决该问题的多种算法中,我选择了阐述函数式编程领域的过滤 和映射。
在上一期中,我对确定一个 数的因子的算法采取了一种朴素法,选择了简单代码而不是最佳执行代码。在本期中,我使用几种不同的函数式概念优化了 这种算法,此外,我还优化了用例的每个版本,类在该用例中调用了多次以便对同一个数进行分类。
我的用于确定 质数的原始 Java 代码如清单 1 所示:
清单 1. 质数分类器的原始 Java 版本
public class PrimeNumberClassifier { private Integer number; public PrimeNumberClassifier(int number) { this.number = number; } public boolean isFactor(int potential) { return number % potential == 0; } public Set<Integer> getFactors() { Set<Integer> factors = new HashSet<Integer>(); factors.add(1); factors.add(number); for (Integer i = 2; i < number; i++) if (isFactor(i)) factors.add(i); return factors; } public int sumFactors() { int sum = 0; for (int i : getFactors()) sum += i; return sum; } public boolean isPrime() { return sumFactors() == number + 1; } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 优化
, 语言
, 质数
, number
, 函数式语言
public
易语言内存优化、易语言cpu优化源码、易语言 黑屏优化、r语言 最优化、c语言优化,以便于您获取更多的相关知识。