所以,我只是想创建一个循环来运行“3n+1”公式,当我输入负数时,我陷入了余数为 0 和 -1 的无限循环。
这是正确的还是我的代码缺少某些内容?
这是我的代码:
Scanner scan = new Scanner(System.in);
number = 0;
method = 0;
int counter= 0;
if(scan.hasNextInt()){
number = scan.nextInt();
int original = number;
while(number!=1){
method = number%2;
if(method==0){
number = number/2;
}else number = number*3+1;
counter +=1;
System.out.println(number);
System.out.println("the remainder was "+method);
}
System.out.println("The original number was "+original);
System.out.println("it took " + counter+ " times to reach 1.");
}else System.out.println("please enter a number");
最佳答案
该猜想仅适用于自然数(即正整数 1、2、3、...)。如果你想将它扩展到 0 和负数,你将不得不使用其他一些公式。查看 https://en.wikipedia.org/wiki/Collatz_conjecture 上的“扩展至更大的域” .
关于java - 我的 "Collatz conjecture"有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702134/