Sum of Series 1^2 + 3^2 + 5^2 + . . . + (2n – 1)^2 in Java

2025 年 5 月 8 日 | 阅读 3 分钟

级数 12+32+52+⋯+(2*n−1)2 表示奇数的平方之和。序列中的每一项都是奇数的平方,从 1 开始,每项递增 2。

这个级数之所以有趣,是因为

  • 涉及的数字是奇数 整数:1、3、5、7、……,由公式 2n−12n - 12n−1 生成,其中 n 表示数字在序列中的位置。
  • 每个数字都被平方:通过将这些奇数的平方相加来形成总和。

示例 1

输入: n = 4

输出84

解释: Sum = 1^2 + 3^2 + 5^2 + 7^2 = 1 + 9 + 25 + 49 = 84

示例 2

输入: n = 10

输出 1330

解释: Sum = 1^2 + 3^2 + 5^2 + 7^2 + 9^2 + 11^2 + 13^2 + 15^2 + 17^2 + 19^2 = 1 + 9 + 25 + 49 + 81 + 121 + 169 + 225 + 289 + 361 = 1330

示例 3

输入: n = 5

输出 165

解释: Sum = 1^2 + 3^2 + 5^2 + 7^2 + 9^2 = 1 + 9 + 25 + 49 + 81 = 165

朴素方法

计算级数 1^2+3^2+5^2+⋯+(2n−1)^2 的直接方法是遍历前 n 个奇数,将每个数字平方,并将结果累加到总和中。

算法

步骤 1: 初始化变量 sum 为 0。

步骤 2: 对于从 1 到 nnn 的每个 iii,使用 2i−12i - 12i−1 计算第 iii 个 奇数

步骤 3: 将奇数平方并加到 sum 中。

步骤 4: 对于从 1 到 nnn 的所有 iii 值重复此过程。

步骤 5: 循环结束后输出 sum 的值。

实施

文件名:SumOfSeries.java

输出

 
Sum of series: 35   

时间复杂度:O(n)

空间复杂度: O(1)

方法:数学公式法

此方法利用直接的数学公式在恒定时间内计算结果,无需迭代或复杂操作。用于计算前 n 个奇数平方和的公式是:

算法

步骤 1: 初始化 n(要考虑的奇数个数)。

步骤 2: 应用公式 Sum=n×(2n−1) 来计算总和。

步骤 3: 将结果存储在变量 sum 中。

步骤 4: 输出 sum 的值。

实施

文件名:SumOfSeries.java

输出

 
Sum of series: 15   

时间复杂度: O(1)

空间复杂度: O(1)