Java 中的十边形数17 Mar 2025 | 5 分钟阅读 在本节中,我们将学习十边形数是什么,并创建Java 程序来计算十边形数。十边形数程序经常出现在 Java 编码面试和学术中。 十边形数十边形数是一个图形数,其递归定义为 ![]() 因此, D(1) = D(1 - 1) + 8 * 1 - 7 = D(0) + 8 - 7 = 0 + 8 - 7 = 0 + 1 = 1 D(2) = D(2 - 1) + 8 * 2 - 7 = D(1) + 16 - 7 = 1 + 16 - 7 = 1 + 9 = 10 D(3) = D(3 - 1) + 8 * 3 - 7 = D(2) + 24 - 7 = 10 + 24 - 7 = 10 + 17 = 27 D(4) = D(4 - 1) + 8 * 4 - 7 = D(3) + 32 - 7 = 27 + 32 - 7 = 27 + 25 = 52 D(5) = D(5 - 1) + 8 * 5 - 7 = D(4) + 40 - 7 = 52 + 40 - 7 = 52 + 33 = 85 计算十边形数计算十边形数有多种方法。在本节中,我们将讨论以下三种方法:
使用递归由于我们已经知道了递归公式,因此使用递归很容易计算出十边形数。下面的程序展示了这一点。 文件名: DecagonalNumbers.java 输出 The first 10 Decagonal numbers are: 1 10 27 52 85 126 175 232 297 370 复杂度分析: 由于计算十边形数的递归从 n 到 0,因此程序的时间复杂度为 O(n),其中 n 是第 n 个十边形数。由于程序不使用任何额外空间,因此空间复杂度为 O(1)。 上述程序的时间复杂度可以进一步降低,因为我们反复计算相同的子问题。例如,如果我们计算 D(3),那么递归地,D(3) 会简化为 D(2),而 D(2) 又会简化为 D(1)。因此,我们看到 D(2) 和 D(1) 被重复计算,这可以避免。以下方法展示了这一点。 使用动态规划我们可以使用一个辅助数组来存储已计算出的十边形数,并在后续计算中使用它们。观察下面的程序。 文件名: DecagonalNumbers1.java 输出 The first 10 Decagonal numbers are: 1 10 27 52 85 126 175 232 297 370 复杂度分析: 程序的时间复杂度为 O(1)。由于程序使用了辅助数组,因此空间复杂度为 O(range),其中 range 是计算十边形数的上限。 如果我们观察递归公式,我们会发现当前的十边形数仅取决于上一个计算出的十边形数,而不取决于之前计算出的所有十边形数。因此,我们可以使用一个变量来存储上一个计算出的十边形数,而不是使用数组。观察下面的程序。 文件名: DecagonalNumbers2.java 输出 The first 10 Decagonal numbers are: 1 10 27 52 85 126 175 232 297 370 复杂度分析: 程序的时间复杂度为 O(1)。由于程序不使用任何额外空间,因此空间复杂度是常数,即 O(1)。 使用数学公式计算十边形数的数学公式是: 因此, D(1) = 1 x ((4 x 1) - 3) = 1 x (4 - 3) = 4 - 3 = 1 D(2) = 2 x ((4 x 2) - 3) = 2 x (8 - 3) = 2 x 5 = 10 D(3) = 3 x ((4 x 3) - 3) = 3 x (12 - 3) = 3 x 9 = 27 D(4) = 4 x ((4 x 4) - 3) = 4 x (16 - 3) = 4 x 13 = 52 D(5) = 5 x ((4 x 5) - 3) = 5 x (20 - 3) = 5 x 17 = 85 实施观察上面数学公式的实现。 文件名: DecagonalNumbers3.java 输出 The first 10 Decagonal numbers are: 1 10 27 52 85 126 175 232 297 370 复杂度分析: 程序的时间复杂度为 O(1)。 下一个主题Java 二进制转十六进制 |
在 Java 中,valueOf() 方法是许多类中定义的静态方法,主要是在原始数据类型(如 Integer、Double、Boolean 等)的包装类中。此方法用于从字符串表示创建相应包装类的对象...
阅读 4 分钟
Eclipse 是最受欢迎的 Java 应用程序开发 IDE。为了有效地使用 Eclipse,我们必须熟悉 Eclipse IDE 的工作区、概念和组件。在继续本节之前,我们将了解 Java 中的 Eclipse 是什么,Eclipse 平台概述,以及...
5 分钟阅读
字符串压缩是计算机科学和编程中的一个基本问题,其目标是通过计算连续重复字符来压缩字符串。该问题的本质是更有效地表示字符串,尤其是在处理大型数据集时。这种技术在各种场景下都很有用...
7 分钟阅读
Java 模板引擎在现代 Web 开发中起着至关重要的作用,它使开发人员能够生成动态内容,并将表示逻辑与底层业务逻辑分开。这些强大的工具提供了一种灵活而高效的方式,可以将数据与预定义的模板相结合,从而生成动态 HTML、XML、...
阅读 4 分钟
Java 插件是 Java 运行时环境 (JRE) 的一部分。它允许浏览器使用 Java 平台来运行 Java Applet。几乎所有浏览器都支持 Java 插件,但有时我们会遇到 Chrome 不支持 Java 等错误。为了...
阅读 3 分钟
在计算问题中,在二进制矩阵中查找最大矩形是经典的挑战性问题,它测试了对动态规划和基于堆栈的方法的理解。该问题通常出现在图像处理、计算机视觉甚至游戏开发等各种领域。在此...
阅读 6 分钟
关联数组将元素存储为 (键, 值) 对。它是一个唯一键的集合,每个键都与一个特定的值相关联。它也称为映射,是一种抽象数据类型,其中每个键在集合中最多出现一次。在 Java 中,...
阅读 3 分钟
在计算机科学中,链表是一种常见的数据结构,常用于存储和管理数据集合。链表由节点组成,每个节点都有一个值和一个指向列表中下一个节点的连接。存在...
阅读 8 分钟
该接口允许我们异步执行线程上的任务。它存在于 java.util.concurrent 包中。ExecutorService 有助于维护线程池并为它们分配任务。它还提供在有任务排队到……的便利。
阅读 10 分钟
K4 City程序使用一种称为k-means聚类算法的方法。该算法用于将相似的数据点分组。在这种情况下,数据点是城市。该程序使用k-means聚类算法来查找将充当中心或...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India