gpt4 book ai didi

java - 没有递归的冰雹序列(请)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:16 29 4
gpt4 key购买 nike

大家好,我是编码的新手,我正在和一位老师一起上 Java 入门课,希望您已经了解一切。我必须对冰雹序列进行编码,它表示为:

选择一些正整数并将其命名为 n。如果 n 是偶数,则将其除以二。如果 n 是奇数,则将其乘以三并加一。继续这个过程直到 n 等于 1。

我们还没有学过递归或数组,他说我们不需要在这段代码中使用它,尽管我不太清楚那是什么意思。我们将使用序列公式展示获得一个所采取的步骤。

这就是我所拥有的,我有以下问题:

  • 它不会识别奇数/偶数
  • 它在所采取的步骤中显示错误的数字

请帮助我识别我哪里出错了并提供解释。我很绝望。

import javax.swing.JOptionPane;
public class Hailstone {

public static void main(String[] args) {
String output = "";
int n;
n = Integer.parseInt(JOptionPane.showInputDialog("\nEnter an Integer"));

while (n != 1) {
int result = 0;
if (n%2 == 0) {
result = n /= 2;
output += n + " is even so I took half = " + result;
JOptionPane.showMessageDialog(null, output);

}else{
result = n*3 + 1;
output += n + " is odd so I took 3n+1 = " + result;
JOptionPane.showMessageDialog(null, output);

}

}

}
}

最佳答案

这条语句:result = n/= 2; 并没有按照您的想法去做。它将n除以2,将结果存储在n中,然后也将结果存储在result中。但是,这不是您的代码的主要问题。

问题是您遗漏了一件非常简单的小事:在循环中更新 n。没有这个,n 永远不会改变。 (除了我上面提到的意外修改。)

因此,您需要做的(解决上述问题后)如下:

在循环结束之前,添加这一行:

n = 结果;

关于java - 没有递归的冰雹序列(请),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54620110/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com