gpt4 book ai didi

java - 检查给定的数列是否属于算术级数、几何级数或调和级数

转载 作者:行者123 更新时间:2023-12-02 06:07:48 27 4
gpt4 key购买 nike

我正在编写一个程序来检查给定的数字系列是否在 AP、GP 或 HP 中。我知道AP是基于公差,GP是基于公比。我的代码适用于 AP 和 GP,但不适用于 HP。下面的代码应该进行哪些更正,还有没有办法优化我的代码。程序如下:

import java.util.*;
class APGPHP
{
public static void main(String[] args)
{
int n;
System.out.println("Enter the number of elements in the series");
Scanner s = new Scanner(System.in);
n = s.nextInt();
int[] a = new int[n];
System.out.println("Enter the numbers");
for (int i = 0;i<n ; i++)
{
System.out.println("Enter the number ["+(i+1)+"] :");
a[i] = s.nextInt();
}
CheckAPGPHP(a);
}

public static void CheckAPGPHP(int[] a)
{
if(a.length<3)
{
System.out.println("Array should contain atleast 3 elements ");
return;
}
if(CheckAP(a) == 1)
{
System.out.println("AP");
if (CheckHP(a) == 1)
System.out.println("HP");
}

if(CheckGP(a) == 1)
System.out.println("GP");
}

public static int CheckAP(int[] a)
{
int iDiff=a[1]-a[0];
for(int i=0;i<a.length-1;i++)
{
if((a[i+1]-a[i])!=iDiff)
return -1;
}
return 1;
}

public static int CheckGP(int[] a)
{
int iRatio=a[1]/a[0];
for(int i=0;i<a.length-1;i++)
{
if((a[i+1]/a[i])!=iRatio)
return -1;
}
return 1;
}

public static int CheckHP(int[] a)
{
float[] b = new float[a.length];
for (int i =0;i<=b.length-1 ;i++ )
{
b[i] = 1.0f/a[i];
}
float iDiff=b[1]-b[0];
for(int i=0;i<b.length-1;i++)
{
if((b[i+1]-b[i])!=iDiff)
return -1;
}
return 1;
}
}

最佳答案

首先,不检查相等性,而是检查数字是否在彼此的某个小公差范围内,例如 1e-6 左右。原因是浮点除法不精确。

例如,在 python (5.0 - 4.9) 中返回 0.09999999999999964,而不是 .1。我知道这不是除法,但这是一个简单的例子,表明浮点运算并不精确。

关于java - 检查给定的数列是否属于算术级数、几何级数或调和级数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22132399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com