java - 进行 Collatz contejure 时无法打印出 1
问题描述
想要对 Collatz contejure 进行编程时,我无法打印 1。请帮忙谢谢。
这是问题:给定自然数n。生成一个整数序列,在 Collatz 猜想中描述:
这是我的代码(不是片段,因为不清楚(底部的示例输入和输出):
import java.util.Scanner;
class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
while (n > 1) {
System.out.println(n);
if (n % 2 == 0) {
n = n / 2;
} else {
n = (3 * n) + 1;
}
}
}
}
样品输入:17
输出:17 52 26 13 40 20 10 5 16 8 4 2
还需要打印 1
解决方案
演示时Collatz Conjecture
,通常在计算后打印,因此将打印语句移至循环末尾。如果要显示用于启动进程的输入值,请先在循环外打印。
System.out.println("Starting with " + n);
while (n > 1) {
if (n % 2 == 0) {
n = n / 2;
} else {
n = (3 * n) + 1;
}
System.out.println(n);
}
推荐阅读
- java - FXML生成的JavaFX更改节点到另一个节点
- javascript - 我的异步 javascript 快速排序不会比同步的执行更快
- r - 如何将数字时间转换为 R 中的日期、时间格式
- ansible - 如何在ansible中使用“回声”?
- python - 试图理解函数和范围问题
- javascript - 如何将 selectionHandle 添加到媒体小部件?
- asp.net-core - 同一个数据库的两个 dbcontext
- apache-kafka - Kafka Streams 中的状态过滤/flatMapValues?
- laravel - 在 Laravel 中访问路由时如何将变量作为路由参数传递?
- ios - 在远处使用大型 3D 模型时,避免 ARkit 和 SceneKit 中的纹理和阴影闪烁