java - 获取等差数列或等比数列中的下一个序列

标签 java algorithm

我想制作一个应用程序,每行生成一个包含 3 个数字的序列,当它到达一个零序列时停止,然后打印它是算术级数还是几何级数以及该系列中的下一个数字。

示例输入:

4 7 10    
2 6 18    
0 0 0

应该输出

AP 13    
GP 54

这是我的代码,我想知道它有什么问题,以及有哪些可能不适用于我的代码。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main
{
    static String s="";
    public static void main (String[] args) throws IOException
    {
    String c;

        String a[];
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        do {
            c= br.readLine();
            a = c.split(" ");
            if(c.charAt(0)!='0'){
            calc(a[1], a[2]);
            }
        }while((c.charAt(0))!='0');
        printer(s);
    }
    public static void calc(String a, String b){
            int x = Integer.parseInt(a);
            int y = Integer.parseInt(b);
            if(y%x==0){
                s += "GP" +" " + (y*(y/x)) + "z";
                return;

            }else{
                s += "AP" + " " + (y + (y-x)) + "z";
                return;
            }
}
    public static void printer(String s){
        String p= "";
        for(int i =0;i<=s.length()-1;i++){
            if(s.charAt(i)!='z'){
                p+= s.charAt(i);
            }else{
                System.out.println(p);
                p= "";
            }
        }
    }
}

最佳答案

您的问题在于您发现进程类型不正确。例如,0 4 8 显然是 AP,但您的算法会说它是 GP。又如:8 4 2是GP,但是2%4会返回false,表示是AP。此外,当提供的序列根本不是进展时,您不会处理案例。

很明显,所有 3 个数字都应该涉及。假设整数 a, b, c 形成 AP 或 GP,您需要找出它是哪个级数。可以使用简单的数学:

  1. 如果它们形成 AP,则 a + c = b + b。下一个元素是 c + c - b
  2. 如果它们形成 GP,则 a * c = b * b。下一个元素是 c * c/b

(请注意 + 变成 *- 变成 /,当你从 AP 切换到 GP)。

关于java - 获取等差数列或等比数列中的下一个序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188479/

相关文章:

java - 将自定义 Maven 依赖项添加到 gradle 项目

java - Jackson ObjectMapper 仅已知接口(interface)

java - Spring Security LDAP 广告身份验证

algorithm - 倒霉岛动态规划

c# - 对于 C# 中的多客户端 TCP 服务器,如何在线程之间划分工作?

C# 比较算法

ios - 如何在某些条件为真时重复操作?

python - 如何对 2D 依赖表进行排序/排序

java - JPanel 填充整个 JFrame

java - 更新 JTextArea 后 JButton 改变位置