0

それぞれのJavaをどのように使用するかについて本当に混乱しています-正しいループ。誰か助けてもらえますか?

さて、これが取引です。コラッツの問題が拡張され、頭から離れることができません。重要なのは、2つの変数xとyの間の範囲のすべてのCollat​​z反復をリストしたいということです。ここで、x> yは0〜10000の範囲です。私の問題は、2番目のフロアループで、値の各数値に対してコラッツ計算全体を実行したいので、値= 7の場合、x = 7(16)などのyまでのコラッツ反復を計算したいということです。 = 19(20)、シーケンス全体は16、3、19、6、14、9、9、17、17、4、12、20、20です。これはJavaで行っています。

java.utilをインポートします。; java.langをインポートします。;

パブリッククラスhackCollat​​z{

public static void main(String[] args){

    Scanner input = new Scanner(System.in);

    int x;
    int y;
    int result = 0;

    System.err.print("Sätt ett värde på x: ");
    x  = input.nextInt();
    System.err.print("Sätt ett värde på y: ");
    y = input.nextInt();

    List<Integer> storeValue = new ArrayList<Integer>();

    for(int i=x; i<=y; i++){
        int value = i;
        storeValue.add(value);
        }       

    for(Integer value : storeValue){
        for(int j = value; j > 1; j++){
            if(j % 2 == 0){
                j=j/2;
            //  System.out.println(j);
                result++;

            }
            else{
                j=j*3+1;
                result++;
        //      System.out.println(j);
            }
        }
        }
        System.out.println(result);
        }       

}

4

1 に答える 1

0

内側の FOR ループを に変更すると、 のfor(int j = value; j > 1;)場合value = 7、値 1 に到達するまでに 16 回の反復が必要になります (予想どおり)。

于 2013-02-07T23:23:06.170 に答える