0

我真的很困惑如何使用 java for each - 循环正确。谁能帮我?

好的,这就是交易。我有一个无法摆脱的扩展 Collat​​z 问题。问题是我想列出两个变量 x 和 y 之间范围内的所有 Collat​​z 迭代,其中 x>y 在 0-10000 范围内。我的问题是,在第二个 foror 循环中,我想对 value 中的每个数字执行整个 collat​​z 计算,所以如果 value = 7 我想计算 x = 7 (16) 的 collat​​z 迭代,依此类推直到 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;),那么 if value = 7,将需要 16 次迭代才能达到值 1(如预期的那样)。

于 2013-02-07T23:23:06.170 回答