Java Program to Check Geometric Progression

2025年5月6日 | 阅读4分钟

问题陈述

编写一个Java程序,用于确定一个网格数字序列是否构成等比数列 (GP)。 等比数列的定义是:除了第一项之外,每一项都是前一项与一个常数相乘得到的。程序应

  1. 接受一个整数序列作为输入。
  2. 验证输入,并确保其至少包含两个元素。
  3. 计算序列中连续项之间的公比。
  4. 验证比率在整个序列中是否一致。
  5. 处理边缘情况,例如包含零或负数的序列,并返回适当的结果。

等比数列 (GP)

等比数列 (GP) 是一种数值序列,其中第一项之后的每一项都是通过乘以一个固定的非零数得到的,这个数是前一项的公比。在数学上,一个序列表示为 GP,其中第一项是公比。

公比可以通过将序列中的任何一项除以前一项来确定。GP 在数学和实际应用中无处不在,包括指数增长、人口研究、金融建模和物理学。理解如何测试一组数字是否构成 GP 是数学和编程中的一个基本概念。

示例

输入

  • 序列 [2, 6, 18, 54]
  • 输出: "该序列是等比数列。"

解释

公比 = 项之间的比率一致 (3)。

输入

序列 [1, 2, 4, 8, 16]

输出: "该序列是等比数列。"

解释

公比 = 项之间的比率一致 (2)。

输入

序列 [5, 15, 45, 100]

输出: "该序列不是等比数列。"

解释

比率: 比率发生变化,因此该序列不是 GP。

检查等比数列的步骤

请遵循以下步骤检查给定序列是否为等比数列。

  1. 输入验证: 确保序列中有至少两个数字。否则,进度概念就没有意义。
  2. 公比计算: 计算序列中连续项之间的比率。
  3. 比例检查: 验证序列中所有项的比例是否一致。
  4. 处理边缘情况: 考虑特殊情况,例如序列包含零或负数。

文件名:GeometricProgressionChecker.java

输出

 
Enter the number of elements in the sequence:
4
Enter the elements of the sequence:
2 6 18 54
The sequence is a geometric progression.   

解释

程序首先定义一个 方法 isGeometricProgression(),该方法接受一个 数组 整数 作为输入。该方法首先检查序列的项数是否少于两项,在这种情况下返回 false,因为 GP 需要至少两个数字。

接下来,程序使用序列的前两项计算公比。然后,它遍历序列,检查连续项之间的比率是否与公比匹配。如果找到不匹配或某项导致除以零,则该方法返回 false。

main() 方法处理用户输入,提示用户输入序列的长度和元素。收集输入后,它调用 isGeometricProgression() 方法并打印序列是否为 GP。

复杂度分析

  1. 时间复杂度
    • isGeometricProgression() 方法遍历序列一次,以检查所有项的公比。因此,时间复杂度为 O(n),其中 n 是序列中的元素数量。
    • main() 方法中的输入读取也需要时间,但这不会增加总渐近复杂度,因为操作是顺序的。
    • 总而言之,该程序的时间复杂度为 O(n)。
  2. 空间复杂度
    • 该程序使用一个整数数组来存储序列,这需要空间。
    • 其他 变量(例如 commonRatio、currentRatio)需要恒定的空间。
    • 因此,空间复杂度为 O(n)。

结论

这个 Java 程序可以有效地检查一个数字序列是否构成等比数列。该实现涵盖了零和负数等边缘情况,同时通过类型转换确保了准确的计算。

通过理解底层逻辑和代码,您可以将此程序改编用于各种应用,例如验证数学计算中的序列、模拟现实世界场景或增强教育工具。


下一个主题Java 错误