首页 > 解决方案 > 进行 Collat​​z contejure 时无法打印出 1

问题描述

想要对 Collat​​z contejure 进行编程时,我无法打印 1。请帮忙谢谢。

这是问题:给定自然数n。生成一个整数序列,在 Collat​​z 猜想中描述:

这是我的代码(不是片段,因为不清楚(底部的示例输入和输出):

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

标签: java

解决方案


演示时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); 
}

推荐阅读