java中的扩展collat​​z计算

时间:2013-02-07 23:03:19

标签: java for-loop collatz

我真的很困惑如何使用java来实现每个循环的正确性。任何人都可以帮助我吗?

好的,这就是交易。我有一个扩展的Collat​​z问题,我无法摆脱困境。问题是我想列出两个变量x和y之间范围的所有Collat​​z迭代,其中x> y在0-10000范围内。我的问题是在第二个foor-loop中我想对值中的每个数字执行整个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中这样做。

import java.util。; import 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);
        }       

}

1 个答案:

答案 0 :(得分:0)

如果您将内部FOR循环更改为:for(int j = value; j > 1;),那么如果value = 7,则需要16次迭代才能达到值1(正如预期的那样)。