java - 冰雹序列 (Java)

标签 java

所以我遇到了分配给我的问题,您编写了一个程序,要求提供起始整数和结束整数,并返回最长的 hailstone sequence 的长度、发生位置的开始位置和结束位置之间的编号以及实际序列。

我已经弄清楚了大部分内容,但我一直坚持打印出实际最大的序列。如果有人能在这方面帮助我,那真的会有帮助。谢谢!

import java.util.Scanner;

public class Hailstone
{


public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);
    int first, last, counter = -500, highestSequence = 0, highestNumber = 0, number = 0, sequence = 0;

    System.out.println("First candidate?");
    first = scan.nextInt();

    System.out.println("Last candidate?");
    last = scan.nextInt();

        for(int x = first; x <= last; x++)
        {
            number = x;
            counter = 1;

            while(number !=1)
            {
                if(number % 2 == 0) //even
                {
                    number = number/2;
                }
                else //odd
                {
                    number = number*3 + 1;
                }

            counter++; //counts sequence
            }
            if(counter > highestSequence)
            {
                highestSequence = counter;
                highestNumber = x;

                sequence = number; 
            }

        }
        System.out.println("longest sequence of " + highestSequence + " occurs at " + highestNumber);

    }
}

最佳答案

您只需获取您的 highestNumber 并运行计算其序列的代码即可打印它。如果您将代码提取到单独的方法中(只是一个草图,请自行验证并修改),将会有所帮助:

   public int checkSequence(int x, boolean print) {
        int number = x;
        while(number !=1)
        {
            if (print) {
               System.out.print(number + " ");
            }
            if(number % 2 == 0) //even
            {
                number = number/2;
            }
            else //odd
            {
                number = number*3 + 1;
            }

        counter++; //counts sequence
        }
        return counter;
   }

在您的程序中,您将调用 checkSequence(x, false),完成后您将调用 checkSequence(highestNumber, true)

关于java - 冰雹序列 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736087/

相关文章:

java - 初始化字段变量

java - 渐进式 HMACSHA256 的 C# 等效项是什么?

java - 对于 String 类型,方法 add(String) 未定义

java - 将特定函数调用记录到特定日志

java - 如何处理大量的 float 数据?

java - 如何计算以像素为单位的字符串字体宽度?

java - 通过列表迭代器在子列表中添加元素

java - 如何在处理中创建对象数组[字面意思]?

java - Log4j2 的 FailoverAppender 错误 : appender Failover has no parameter that matches element Failovers

java - 用Java实现AES加解密