gpt4 book ai didi

java - 冰雹Java程序

转载 作者:行者123 更新时间:2023-12-02 05:09:31 26 4
gpt4 key购买 nike

我正在开发冰雹序列程序,用户在其中选择一个正整数。如果数字是偶数,它将被除以二。如果数字是奇数,则将其乘以三并加一。程序将继续执行,直到数字等于 1。程序还将告诉用户达到 1 所需的步数。

目标是递归完成,我的问题是我无法向用户声明每个步骤,因为计算发生在数字上,例如“数字是我除以 2 并且它 =”

这是我到目前为止的代码,任何建议或替代方案都会有帮助。

谢谢

导入 javax.swing*

{
public class hailstone {
static int Count;
static int HailstoneNumbers(int Num)
output += (Num + " " ) ;
JOptionPane.showMessageDialog(null, output);

if (Num == 1 && Count == 0) {
return Count;

}
else if (Num == 1 && Count != 0) {
//n-1
Count++;
return Count;
}
else if (Num % 2 == 0) {
Count++;
HailstoneNumbers(Num / 2);
}
else if (Num % 2 != 0) {
Count++;
HailstoneNumbers(3 * Num + 1);
}
return Count;


}

public static void main(String[] args)
{
int Num = Integer.parseInt(JOptionPane.showInputDialog("\n Enter a positive number"));
int x;

x = HailstoneNumbers(Num);


JOptionPane.showMessageDialog(null, "Number of Steps" + x );
}

}

最佳答案

您调用HailstoneNumbers(Num/2);。如果您想递归地执行此操作,则函数必须在每一步返回自身,例如return HailstoneNumbers(Num/2);。另外,如果要修改全局变量,则递归性毫无意义。这是一个例子:

int hailstone(int i, int steps) {
steps++;
if(i == 1) return steps;
if(i % 2 == 0) return hailstone(i / 2, steps);
else return hailstone(i * 3 + 1, steps);
}

// main function
x = hailstone(num, 0);

请注意,按照惯例,函数和变量不应以大写字母开头,除非它们是final

关于java - 冰雹Java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56332834/

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